用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編譯后二進制程序的體積。但我並沒有深究這兩個參數對程序性能是否有明顯提升效果。