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