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

标签 c++ mingw static-linking

我从这里使用 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/下载

我已经成功地使用 -static-libgcc -static-libstdc++ 静态链接 libstdc++-6.dlllibgcc_s_sjlj-1.dll 参数,但我找不到对 libwinpthread-1.dll 执行相同操作的命令。

最佳答案

如果您的工具链包含静态 winpthreads,请添加选项

-static

将拉入所有库的静态版本。

或者,您可以从工具链目录中删除 libwinpthread.dll.a 和 DLL 本身。这可能会弄乱与 libstdc++ 和 libgcc DLL 链接的程序,所以要小心。

第三个选项是使用 -Wl,-Bdynamic-Wl,-Bstatic 来选择你想要链接的版本(这就是 - static 在调用 ld 时在内部执行)。一个例子:

gcc -o someexec someobject.o -Wl,-Bdynamic -lsomelibIwantshared -Wl,-Bstatic -lsomelibIwantstatic

如果您在添加 -v 的情况下运行链接命令,当您使用 -static-libgcc 时,您应该会看到这些选项出现在 ld/collect2 调用中>-static-libstdc++.

关于c++ - 如何在mingw中进行libwinpthread-1.dll的静态链接?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13768515/

相关文章:

c++ - 隐藏在构造函数初始化列表中的名称

qt - 在 qt creator(mingw 4.8 和 qt 5.3)中使用 c++11 功能时出现奇怪的错误

ios - 为什么我的静态库会出现 iOS 链接器错误?

c++ - 我在哪里可以找到 OS X 上的符号 GetCurrentProcess?

c++ - 如何获取在 QGraphicsView 中加载的图像像素位置 - 奇怪的 MapToScene() 行为

c++ - std::list 在 boost::interprocess::managed_shared_memory 中

c++ - 通过字符数组搜索

video - 在 Windows 7 上使用 MinGW 构建具有视频支持的 PJSIP

c++ - libwinpthread.a 和 libpthread.a 的区别?

c++ - cmake 和部分链接解决符号冲突