提问者:小点点

如何在mingw中进行libwinpthread-1. dll的静态链接?


我从这里使用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。


共3个答案

匿名用户

如果您的工具链包含静态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”。