私はCGoを頻繁に使用するGoコードを作成しています。このコードは、を共有ライブラリまたは静的ライブラリにコンパイルする必要があります(静的が強く推奨されます)。 (code for reference)コードビルダーのリンカーエラーが発生します。手動でリンクすることはできますか?
これはLinuxでもMacでも問題なく動作しますが、Windowsではリンカ段階で4つのモード(c-shared、shared、c-archive、archive)が使用できないか、 go tool link -shared
は、ウィンドウに固有の指示がないことについて手作業で苦情を言います。
私の理解では、私は lib.a使用可能なを構築する必要があるすべては私がオブジェクトファイル(* .o)はに使用し、使用可能な静的ライブラリを生成するためにar
を通してそれを置く場合、すべてをコンパイルするということです。
私はGoのリンカを完全にスキップでき、準備された.o
ファイルに基づいて、手動で.a
を作成するかどうかです。
これが可能であれば、どうすればいいですか?
これらの「準備済みの.o'ファイル」はどこで静的ライブラリを構築するのですか? Windowsの問題の詳細については、https://github.com/golang/go/issues/11058を参照してください。 – JimB
@JimB .oファイルは、cgoを呼び出すときにGo自体から来ています。 '-x'引数を指定してサンプルコードを実行すると、フードの中にあるすべてのことが表示され、' go tool [tool] [arguments] 'を呼び出して' gcc [arguments] 'これはCGoコードで実行されるためです。 – AlexKey
@JimBまた、あなたがリンクしている問題をまだ見ていれば、解決されていないことを意味します。しかし、私自身の答えで書くと、すべてを正常にコンパイルできるように、Goコードの最新のマスターブランチを構築しなければなりませんでした。 – AlexKey