2015年1月18日星期日

MinGW-w64 的 libwinpthread-1.dll 依赖问题

用 MinGW-w64 工具链编译程序默认是动态链接 libgcclibstdc++。这样客户机上必须有这两个 DLL 才能运行目标程序。
可以用 -static-libgcc -static-libstdc++ 来设置成静态链接。
但是 libstdc++ 有一个依赖是 libwinpthread-1.dll,它无法用 -static-* 选项来关掉。
虽然很多人建议用 -static,但是它有副作用。
编过研究,我找到了解决方案:
-static-libgcc -static-libstdc++ -Wl,-Bstatic -lstdc++ -lpthread -Wl,-Bdynamic
将它加在 g++ 命令行的最末尾即可。注意 -lstdc++-lpthread 之前。

去 StackOverflow 为我的这个答案投票:[问题 1] [问题 2]