1

libImmortal.aわかりました、と呼ばれるいくつかのライブラリを構築したとしましょうlibUglyFace.so。1 つ目は に~/LakeOfBlood/libあり、2 つ目は にトラフmake installでインストールされ/usr/libます。ボーナスで私はldconfig

~/LakeOfBlood私は編集したいですCMakeList.txt。ライブラリを追加します:

project (LOB)
.
.
.
# (the binary will be built in ~/LakeOfBlood)
link_directories(${LOB_BINARY_DIR}/lib)
.
.
.
target_link_libraries(LakeOfBlood UglyFace Immortal)

しかし、コンパイルするとld見つかりませんImmortal

変更することでまだリンクできます:

target_link_libraries(LakeOfBlood UglyFace Immortal)

target_link_libraries(LakeOfBlood UglyFace /home/OftheBeast/LakeOfBlood/Immortal.a)

その後ld動作します。

...BUTT、はい af* * * * * * "but" があります...

LakeOfBlood を開始すると、次のようになりました。

./LakeOfBlood: error while loading shared libraries: libUglyFace.so: cannot open shared object file: No such file or directory

2 つのライブラリは私のものではなく、OccultGod. もしそうなら、私はldd OccultGod得ました:

libUglyFace.so => /home/OfTheBeast/LakeOfBlood/lib/libUglyFace.so (0x0000666)

だから今、

  1. 上記のものの代わりにOccultGod使用するにはどうすればよいですか? /usr/lib/libUglyFace.so(彼自身のトラウトCMakeList.txt
  2. どうすれば修正できますCMakeList.txtlibImmortal.a
  3. LakeOfBlood見えない理由を教えてください/usr/lib/libUglyFace.so。つまり/usr/lib、標準パスは正しいですか?次に、そこにあるすべてのライブラリは、バイナリによって自動的に検出されると思いました...
4

1 に答える 1

0
  1. ターゲット名の代わりにパスを使用:target_link_libraries(OccultGod /usr/lib/libUglyFace.so)
  2. ここで何が問題なのかわかりませんでしたがT/home/OftheBeast資本を作るべきではありませんか?
  3. 実行可能ファイルにrpathされているためだと思います。あなたのプロジェクトかmake install、でターゲット名を使用しないかのどちらかtarget_link_libraries()です。
于 2013-10-15T09:58:01.613 に答える