40

Goを使用して共有ライブラリ(.so)を作成することは可能ですか?

更新:「問題」を作成しました。

4

4 に答える 4

39

これは-linksharedフラグを使用して可能になりました

あなたがする必要があるのは、最初にこのコマンドを実行することです:

go install -buildmode=shared -linkshared  std

(上記のコードにより、すべての一般的なパッケージが共有可能になります!)

go install  -buildmode=shared -linkshared userownpackage

最後に、コードをコンパイルするときに実行する必要があります。

go build -linkshared yourprogram

上記のものは、すべてを静的にリンクするのではなく、動的にリンクするだけで、コンパイルされたファイルがはるかに小さくなります。静的リンクを使用した「hello.go」ファイルは2.3MBですが、動的リンクを使用した同じコードはわずか12KBです。

于 2016-01-28T11:31:52.743 に答える
9

Go実行モードでは、Goパッケージを共有ライブラリとして構築する方法について説明しています。

「このモードでは、Goパッケージまたはパッケージのセットを共有ライブラリとしてビルドできます。これらのGoパッケージの1つ以上をインポートするGoプログラムは、この共有ライブラリに対してリンクできます。共有ライブラリは、 Goプログラムはリンクされており、実行時間もあります。プログラムの起動時に使用できる共有ライブラリが使用されます。

Go 1.5リリースでは、これはlinux-amd64ターゲットに対してのみ実装されています。gccgoを使用すると、サポートされているすべてのターゲットに実装されます。」

于 2015-08-24T21:56:09.617 に答える
9

今可能です!Goを使用して.soファイルを作成し、Pythonに簡単にインポートしました。これが私が気に入った記事です:http ://www.darkcoding.net/software/building-shared-libraries-in-go-part-1/

于 2016-07-24T04:47:55.293 に答える
5

どうやら、それは今では可能ですが、非常に正確な一連の状況下でのみ可能です。より正確には、Androidプラットフォーム用に作成している場合。

GitHubの「goandroid」プロジェクトは、GoがAndroidNDKで特定の用途に使用する共有ライブラリを構築できるようにする一連のパッチを提供します。https://github.com/eliasnaur/goandroidを参照してください

于 2013-06-29T19:48:10.223 に答える