編譯與調試
調試時從終端鍵盤輸入
調試帶有需要用戶鍵盤輸入的程序時,VSCode報錯:Unable to process `evaluate`: debuggee is running,因為調試器不知道具體是哪個終端輸入。需要配置啟動文件 .vscode/launch.json 類似如下(注意 console 行): 參考VSCode運行Go程序報錯:Unable to process `evaluate`: debuggee is running-CSDN博客
{"version": "0.2.0","configurations": [{"name": "my-stock-history","type": "go","request": "launch","mode": "auto","program": "main.go","console": "integratedTerminal"}]
}
golang獲取鍵盤輸入的方式有好幾種,可參考?go語言里面怎么獲取鍵盤錄入 ? Worktile社區
Linux → Windows帶cgo交叉編譯
開發環境 Linux (Deepin 20.9),目標環境 Windows 10 (LTSC 21H2)。使用了 Sqlite3 不僅要求兩個環境安裝了Sqlite3的命令工具,而且 Sqlite3 使用了?CGO,所以不得不在開發環境安裝目標環境的C/C++編譯器:
sudo apt-get install gcc-mingw-w64
然后,編譯命令前需要指定環境變量參數:目標操作系統名稱、架構;啟用CGO,使用的C/C++編譯工具(不指定CC可能遇到錯誤提示 gcc: error: unrecognized command line option ‘-mthreads’; did you mean ‘-pthread’?)。
GOOS=windows GOARCH=amd64 CGO_ENABLED=1 CC=x86_64-w64-mingw32-gcc go build -o my-app.exe
有關交叉編譯細節,可參考?https://juejin.cn/post/7506843286654582835
沒有使用CGO的程序,不要啟用CGO!