Golang 编译C++程序运行时找不到libwinpthread-1.dll,无法执行代码


用Golang调用C,编译后放到别的电脑使用时候提醒“由于找不到libwinpthread-1.dll,无法继续执行代码,重新安装程序可能会解决此问题”

我先试过设置环境变量set CGO_CXXFLAGS=-static-libgcc -static-libstdc++ -Wl,-Bstatic -lstdc++ -lpthread -Wl,-Bdynamic

然后go build -ldflags="-s -w -static-libgcc -static-libstdc++ -Wl,-Bstatic -lstdc++ -lpthread -Wl,-Bdynamic" .,运行后还是不到该dll。

用这个go build -ldflags "-extldflags \"-static\" -s -w" 编译后就能链接必要的静态库了,没毛病了!

Linux下请把\"换为单引号即可go build -ldflags "-extldflags '-static' -s -w"

其中-w表示去除调试信息,-s表示去除符号表,这两个参数可以明显减少Golang编译后二进制程序的体积。但我并没有深究这两个参数对程序性能是否有明显提升效果。


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM