プログラムの一般的なプロセス:編集、コンパイル、リンク、実行します。プロジェクトのソースコードのgolangがオープンソースであるため、我々はめったにコンパイル、リンクの問題に世話をしていません。プロジェクト内の非オープンソースのサードパーティのライブラリの場合、この時間はアウトパックどのようにプログラムのexeファイルの実行可能?
静的ファイルを使用してコンパイルgolang
使用行くツールのコンパイル
静的ファイルへのリンクを使用してgolang
ゴーツールのリンクを使用します
//staticpkg/print.go
package staticpkg
import "fmt"
func Hello() {
fmt.Println("hello")
}
//运行 go install 会生成对应的.a文件
//修改print.go文件,去掉函数实现,
//main/main.go
package main
import (
"staticpkg"
)
func main() {
staticpkg.Hello()
}
//使用tool的compile命令编译当前项目
go tool compile -I $GOPATH/windows_amd64 main.go
//会生成一个main.o文件
//使用tool的link命令生成可执行文件
go tool link -o main.exe -L $GOPATH/windows_amd64 main.go
//会生成一个main.exe程序,直接运行会输出hello
//如果直接go run main.go此时没有任何输出
ただ、対応する.Aファイルを持つように、静的ファイル(.Aファイル)のコンパイルとリンクを使用している場合。.Aファイルができますが、開発のため.Aファイルだけでなく、対応する宣言ファイルを使用したい場合、パッケージにいくつかの定義を表示することができません。
https://github.com/golangaccount/exportheadは、単純な輸出品目は、非輸出品目で実装の詳細とタイプまたはインタフェース機能を削除したパッケージの宣言を、行くです