用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编译后二进制程序的体积。但我并没有深究这两个参数对程序性能是否有明显提升效果。