C ++ mingw_w64线程使用静态链接错误

时间:2016-01-04 17:55:45

标签: c++ multithreading gcc clang++ mingw-w64

我正在使用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构建此应用程序?

0 个答案:

没有答案