Go バイナリでの動的リンク
問題:
既存の Go バイナリを使用しないため、外部 Go ファイルをコンパイルして機能を追加する必要があります。コンパイルが完了したら、アプリケーション全体を再構築せずに、この新しいコードをバイナリに統合する必要があります。
解決策:
Go 1.5 以降では、次のことが可能になりました。共有ライブラリを動的に構築してリンクします。目的の機能を実現する方法は次のとおりです。
$ go install -buildmode=shared std
このコマンドは、標準ライブラリを共有ライブラリとして構築します。
次のように外部 Go ファイルをコンパイルします:
$ go build -linkshared hello.go
外部 Go ファイルがコンパイルされたら、次のコマンドを使用して既存のバイナリにリンクできます。 -linkshared flag:
$ go install -linkshared mybinary.go
既存のバイナリ内で、他の関数と同様に新しくコンパイルされたコードを呼び出すことができるようになりましたバイナリで定義される
例:
package main import ( "fmt" "github.com/myimportpath/mypackage" ) func main() { fmt.Println("Before calling compiled code") mypackage.RunFoo() fmt.Println("After calling compiled code") }
以上が外部の Go コードを既存の Go バイナリに動的にリンクするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。