4

私が取り組んでいるプロジェクトをビルドして実行しようとしています。私は先に進んで構築し、すべてが素晴らしく、いかなる種類のエラーもありません. 次に、実行可能ファイルを実行しようとすると、動的ライブラリの依存関係の一部が見つからないというエラー メッセージが表示されます。

dyld: Library not loaded: libgpr.dylib
  Referenced from: ./test-exec
  Reason: image not found
Trace/BPT trap: 5

面白い。何をotool -l報告しますか?

... snip ...
Load command 11
       cmd LC_MAIN
   cmdsize 24
  entryoff 1247184
 stacksize 0
Load command 12
          cmd LC_LOAD_DYLIB
      cmdsize 104
         name /abs/path/to/libprotobuf.10.dylib (offset 24) <--- The same path as passed to the linker
   time stamp 2 Wed Dec 31 19:00:02 1969
      current version 11.0.0
compatibility version 11.0.0
Load command 13
          cmd LC_LOAD_DYLIB
      cmdsize 40
         name libgpr.dylib (offset 24)     <--- Note the local path
   time stamp 2 Wed Dec 31 19:00:02 1969
      current version 0.0.0
compatibility version 0.0.0

何を与える?CMake によって出力されるように、私のビルド呼び出しは (いくつかのクリーンアップの後) です。

コンパイル (読みやすくするための改行)

cd /path/to/project && /path/to/c++ 
   -Wno-inconsistent-missing-override -g -fPIE 
-I/path/to/project -I/googletest/headers 
-I/googlemock/headers 
-I/path/to/project/usr/include 
-I/include 
-I/path/to/jni/Contents/Home/include
-I/path/to/jni/Home/include/darwin
-std=gnu++11 -o test-exec.o -c
/path/to/project/test-exec.cc

リンク:

cd /path/to/project && /usr/local/Cellar/cmake/3.2.2/bin/cmake -E cmake_link_script CMakeFiles/test-exec.dir/link.txt --verbose=1
/path/to/c++   
-Wno-inconsistent-missing-override -g 
-Wl,-search_paths_first
-Wl,-headerpad_max_install_names  
test-exec.o  -o test-exec
/path/to/libprotobuf.dylib 
/path/to/libgpr.dylib
/path/to/libgrpc.dylib
/path/to/libgrpc++.dylib
../../dep1.a
../../dep2.a
/path/to/libgmock.a
/path/to/libgmock_main.a 
/path/to/libgtest_main.a

私が知る限り、 と の両方libprotobuf.dyliblibgpr.dylibリンク段階で絶対パスとして渡されています。libprotobuf.dylibではなく、絶対パスでロードされるのはなぜですかlibgpr.dylib?

価値があるのは、設定DYLD_LIBRARY_PATHすることで機能しますが、設定したりエクスポートしたりする必要はありません。すべての依存関係を構築し、それらを特定のディレクトリに配置するようにレポを設定しました。これは、単に複製して構築する必要があります。

私のコンパイラのバージョンは次のとおりです。

/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/c++ --version
Apple LLVM version 7.0.0 (clang-700.0.72)
Target: x86_64-apple-darwin14.5.0
Thread model: posix
4

1 に答える 1