Go バイナリからの動的構築とリンク
既存の Go バイナリがあり、そこに外部コードを組み込む必要がある状況を考えてみましょう。ダイナミックに。これは、外部 Go ファイルをコンパイルし、既存のバイナリにリンクすることで実現できます。
外部 Go ファイルのコンパイル
2015 年 8 月に Go 1.5 がリリースされると、サポートが開始されます。共有ライブラリ用の機能が導入されます。 -buildmode=shared フラグを使用すると、外部 Go ファイルを共有ライブラリとしてビルドできます。
go install -buildmode=shared external.go
コンパイルされたコードのリンク
コンパイルされた共有ライブラリをリンクするには既存のバイナリに追加するには、ビルド中に -linkshared フラグを使用しますprocess:
go build -linkshared main.go
使用例
指定された例では、メイン バイナリには次のコードが含まれます。
func main() { // Compile external package containing runFoo() pkg, err := build.Import("github.com/example/external", "", build.ImportModeShared) if err != nil { // Handle error } // Get runFoo function from compiled package runFoo := reflect.ValueOf(pkg.Func("runFoo")) // Call the compiled runFoo function runFoo.Call(nil) // Continue execution normally }
このアプローチプログラム全体を再構築することなく、既存の Go バイナリに新しい機能を動的に組み込むことができます。
以上が外部の Go コードを既存の Go バイナリに動的にリンクするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。