在Debian系統上編譯Golang的靜態庫,你需要遵循以下步驟:
首先,確保你已經安裝了Go語言和相關的構建工具。如果沒有,請運行以下命令來安裝它們:
sudo apt-get update
sudo apt-get install golang-go build-essential
為了編譯靜態庫,你需要設置CGO_ENABLED
環境變量為0。這將禁用CGo,從而生成純Go代碼的靜態庫。
export CGO_ENABLED=0
創建一個名為hello.go
的文件,并添加以下內容:
package main
import "C"
//export Hello
func Hello() {
println("Hello from Go!")
}
func main() {}
這個簡單的示例程序定義了一個名為Hello
的函數,它將在編譯為靜態庫時導出。
運行以下命令來編譯靜態庫:
go build -o libhello.a hello.go
這將生成一個名為libhello.a
的靜態庫文件。
現在你可以將生成的靜態庫鏈接到其他C或Go程序中。例如,創建一個名為main.c
的C文件,內容如下:
#include <stdio.h>
// 聲明Hello函數
void Hello();
int main() {
Hello();
return 0;
}
然后,使用以下命令編譯C程序,并鏈接到libhello.a
靜態庫:
gcc main.c -L. -lhello -o main
這將生成一個名為main
的可執行文件。運行它,你應該看到輸出“Hello from Go!”。
注意:在編譯C程序時,確保將當前目錄(.
)添加到庫搜索路徑中,以便鏈接器可以找到libhello.a
文件。你可以使用-L.
選項來實現這一點。