我从这里使用mingw:http://sourceforge.net/projects/mingwbuilds/files/host-windows/releases/4.7.2/32-bit/threads-posix/sjlj/x32-4.7.2-release-posix-sjlj-rev2.7z/download
我已经成功地管理静态链接libstdc-6. dll和libgcc_s_sjlj-1.dll
通过使用参数,但我找不到一个命令来做同样的事情与libwinpthread-1.dll。
如果您的工具链包含静态winpthread,请添加选项
-static
将拉入它可以拉入的所有库的静态版本。
或者,您可以从工具链目录中删除libwinpthread. dll.a和DLL本身。不过,这可能会弄乱链接libstdc和libgcc DLL的程序,所以要小心。
第三种选择是使用-Wl,-Bactive
和-Wl,-Bsight
来选择您想要链接的版本(这就是-sight
在内部调用ld时所做的)。一个例子:
gcc -o someexec someobject.o -Wl,-Bdynamic -lsomelibIwantshared -Wl,-Bstatic -lsomelibIwantstatic
如果您运行添加了-v
的链接命令,当您使用-strist-libgcc
和-strist-libstdc
时,您应该会看到这些选项出现在ld/Collect2调用中。
试试这个:
-static-libgcc -static-libstdc++ -Wl,-Bstatic -lstdc++ -lpthread -Wl,-Bdynamic
请注意-lp线程
之前的-lstdc
。它对我有用。
确保将其添加到g
命令行的末尾。
您可能应该检查命令行选项为GCC留档。
这些不是'-statist-的东西'命令,只有标准库(libgcc和libstdc)可以用一个命令设置为静态链接。对于其他库,您首先使用“-st”切换到静态链接,然后使用单独的命令列出要包含的库,即“-lpthread”。