gcc が自動的に行うものと同一のライブラリを生成するように LibTools を説得するにはどうすればよいですか?
これは、明示的に行うと機能します。
gcc -o libclique.dylib -shared disc.c phylip.c Slist.c clique.c
cp libclique.dylib [JavaTestDir]/libclique.dylib
しかし、もしそうなら:
Makefile libclique.la (which is what automake generates)
cp .libs/libclique.1.dylib [JavaTestDir]/libclique.dylib
Java はライブラリを見つけますが、エントリ ポイントを見つけることができません。
「automake スクリプトで共有ライブラリ (.so) を作成する方法」を読みました。スレッドとそれは大いに役立ちました。-shared フラグを使用して作成された dylib を取得しました (生成された Makefile によると)。しかし、Java Native Access から使用しようとすると、「シンボルが見つかりません」というエラーが表示されます。
Makefilelibclique.la
によって生成された を調べると、重要な情報が含まれていないように見えます。リンクのオーバーロードであり、後続の C/C++ コンパイラの手順 (私にはありません) の便宜のために物事を移動しているように見えます。そのためlibclique.1.dylib
、機能する動的ライブラリになると期待しています。
それが私が間違っているところだと推測していますが、JNAがdylibに直接リンクし、それでコンパイルされていないことを考えると(上記の議論の例によると)、それ以降のすべてのコンパイル手順は、 LibTools のマニュアルは意味がありません。
注: 私は Mac でテストしていますが、Windows と Linux マシンでもこれを行う必要があるため、これを Automake に入れようとしています。
注 2: 私は Java 開発に Eclipse を使用しています。はい、dylib をインポートしました。
ありがとう