go 編譯問題

2022-04-03 05:04:47 字數 912 閱讀 9472

golang的編譯使用命令 go build , go install;除非僅寫乙個main函式,否則還是準備好目錄結構;

gopath=工程根目錄;其下應建立src,pkg,bin目錄,bin目錄中用於生成可執行檔案,pkg目錄中用於生成.a檔案;

golang中的import name,實際是到gopath中去尋找name.a, 使用時是該name.a的原始碼中生命的package 名字;這個在前面已經介紹過了。

注意點:

1. 系統編譯時 go install abc_name時,系統會到gopath的src目錄中尋找abc_name目錄,然後編譯其下的go檔案;

2. 同乙個目錄中所有的go檔案的package宣告必須相同,所以main方法要單獨放乙個檔案,否則在eclipse和liteide中都會報錯;

編譯報錯如下:(假設test目錄中有個main.go 和mymath.go,其中main.go宣告package為main,mymath.go宣告packag 為test);

$ go install test

can't load package: package test: found packages main (main.go) and test (mymath.go) in /home/wanjm/go/src/test

報錯說 不能載入package test(這是命令列的引數),因為發現了兩個package,分別時main.go 和 mymath.go;

3. 對於main方法,只能在bin目錄下執行 go build path_tomain.go; 可以用-o引數指出輸出檔名;

4. 可以新增引數 go build -gcflags "-n -l"  ****,可以更好的便於gdb;詳細參見

5. gdb全域性變數主一點。 如有全域性變數 a;則應寫為 p 'main.a';注意但引號不可少;

Go編譯問題集錦

問題1 unrecognized command line option fno stack protector 具體描述 安裝完go編譯環境後用liteide進行編譯時,控制台列印出如下錯誤 錯誤 程序退出 2.解決辦法 仔細看一下error內容,發現有一行是 github.com mattn g...

go交叉編譯

指定叉編譯目標 goarch 目標平台 編譯後的目標平台 的處理器架構 386 amd64 arm goos 目標平台 編譯後的目標平台 的作業系統 darwin freebsd linux windows 一 windows 下編譯linux 64位可執行程式 set cgo enabled 0 ...

Go交叉編譯

使用go語言做了乙個微服務,微服務中的乙個功能,需要呼叫底層so。該微服務執行於arm64架構,系統為aarch64 gnu linux。因此需要交叉編譯。第一步 編寫編譯指令碼,指令碼中需要設定環境變數 go build v 第二步 調整gcc編譯環境。如下圖中5項,預設用於編譯和鏈結的工具。位於...