ホームページ > バックエンド開発 > Golang > 外部の Go コードを既存の Go バイナリに動的にリンクするにはどうすればよいですか?

外部の Go コードを既存の Go バイナリに動的にリンクするにはどうすればよいですか?

Barbara Streisand
リリース: 2024-12-13 19:17:11
オリジナル
296 人が閲覧しました

How Can I Dynamically Link External Go Code to an Existing Go Binary?

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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート