我正在使用clang 3.7和MinGW-w64 4.0版。
试图建立这个:
#include <thread>
void f(){}
int main()
{
std::thread t(f);
return 0;
}
使用这些编译器标志clang++ -std=c++11 -pthread C:\Users\Илья\Desktop\main.cpp -o C:\Users\Илья\Desktop\main.exe -static
生成此链接器输出:
C:\ mingw64 \ lib中\ GCC \ x86_64的-W64-的mingw32 \ 5.1.0 \的libstdc ++一个(tinfo.o):(文本$ _ZNKSt9type_infoeqERKS_ +为0x0)。:
std::type_info::operato r==(std::type_info const&) const' C:\Users\75BD~1\AppData\Local\Temp\main-005548.o:(.text[_ZNKSt9type_infoeqERKS_]+0x0): first defined here C:\mingw64\lib\gcc\x86_64-w64-mingw32\5.1.0\libstdc++.a(future.o):(.text$_ZNSt16_Sp_counted_baseILN9__gnu_cxx12_Lock_policyE2EE10_M_destroyEv[_ZNSt16 _Sp_counted_baseILN9__gnu_cxx12_Lock_policyE2EE10_M_destroyEv]+0x0): multiple definition of
std :: _ Sp_counted_base&lt;(__ gnu_cxx :: _ Lock_policy)2&gt; :: _ M_de stroy()'的多重定义 C:\用户\ 75BD〜1个\应用程序数据\本地\ TEMP \主005548.o :(文本[_ZNSt16_Sp_counted_baseILN9__gnu_cxx12_Lock_policyE2EE10_M_destroyEv] +为0x0): 首先定义她的e C:\ mingw64 \ lib中\ GCC \ x86_64的-W64-的mingw32 \ 5.1.0 \的libstdc ++一个(future.o):(文本$ _ZNSt16_Sp_counted_baseILN9__gnu_cxx12_Lock_policyE2EE10_M_releaseEv [_ZNSt16 _Sp_counted_baseILN9__gnu_cxx12_Lock_policyE2EE10_M_releaseEv] + 0x0):多个定义 `std :: _ Sp_counted_base&lt;(__ gnu_cxx :: _ Lock_policy)2&gt; :: _ M_re lease()' C:\用户\ 75BD〜1个\应用程序数据\本地\ TEMP \主005548.o :(文本[_ZNSt16_Sp_counted_baseILN9__gnu_cxx12_Lock_policyE2EE10_M_releaseEv] +为0x0): 首先定义了她的e clang ++。exe:错误:链接器命令失败了 退出代码1(使用-v查看调用)
如何修复此问题并使用-static和-pthread构建此应用程序?