靜態package - skynocover/Wiki-for-GoLang GitHub Wiki

靜態package

在go run 時使用靜態檔案已被捨棄
Binary-only packages are increasingly hard to support safely.

但是可以在complie時使用靜態檔案

1. 編譯.a檔

先在/usr/local/go/src建立say資料夾

cp ./say.go /usr/local/go/src/say

在/usr/local/go/src/say

go install

因此會在 /usr/local/go/pkg/linux_amd64 建立.a檔

現在可以移除say的pkg資料夾了

2. 編譯main檔

使用

go tool compile -I /usr/local/go/pkg/linux_amd64 main.go

建立main.o檔

使用

go tool link -o main -L /usr/local/go/pkg/linux_amd64 main.o

編譯main

可以使用main了

使用makefile自動化

建立檔案 makefile

BINARY_NAME=main
build:
	go tool compile -I /usr/local/go/pkg/linux_amd64 main.go
	go tool link -o $(BINARY_NAME) -L /usr/local/go/pkg/linux_amd64 main.o
	./$(BINARY_NAME)

使用命令

make build

把.a檔當作C的靜態library使用

已被捨棄的 binary-only-package

使用方式