2011-08-23 11 views
5

私はJNIで作業しています。私は2つの共有ライブラリを使用するラッパーライブラリ(wrapper.so)を持っています:one.soとtwo.so共有ライブラリの相対パス

すべてうまくいきます。すべての* .soは、プログラムフォルダ内のlibフォルダにあります。

問題は、このフォルダを別のコンピュータにコピーすると、リンクの問題が発生することです。

のは、私はマシンのuser2の(/ホーム/ user2の/プログラム)でこれを実行し、私は機械USER1(/ホーム/ user1の/プログラム)にコンパイルしましょう、私はリンクエラーを取得:

ないUnsatisfiedLinkErrorを:私のような(親プログラムフォルダからの相対ライブラリのリンクを作ることができますどのように/home/user1/program/lib/one.so

、私はコンパイルしてるthis_foler ??/libに

の検索のような:

g++ -c -o src/wrapper.o src/wrapper.c 
g++ -shared -o wrapper.so src/wrapper.o one.so two.so 

答えて

8

How I can make the linking of the libraries relative to the parent program folder

ご使用のオペレーティングシステムによって異なります。 Linuxでは、これはおそらく動作します:

g++ -shared -o wrapper.so -Wl,-rpath='$ORIGIN' src/wrapper.o one.so two.so 

注:単一引用符は、上記のコマンドで重要です。

+1

@Rockskull答えがうまくいくなら、あなたはそれを受け入れるか、投票するか、あるいはその両方を行うことになっています。あなたがしなければ、あなたの質問にネクスタイムで答える気にならない人もいます。 –

+0

申し訳ありません。スタックオーバーフローの初心者。私はそれを受け入れるが、私はそれを投票することはできない。 – lcguida

+0

@EmployedRussianあなたはintelコンパイラの対応コマンドを知っていますか?ありがとう。 – xslittlegrass