0

過去 6 時間ほどの間、理解しようとしてきた非常に単純な質問があります。Mac OS X で動的ライブラリを単純に構築し、そのライブラリを使用してアプリケーションを構築したいと考えています。.dylib を作成し、それを使用してテスト アプリケーションをコンパイルしましたが、アプリケーションを実行すると次のようになります。

Joes-Mac-Pro:Desktop Joe$ ./test dyld: ライブラリがロードされていません: ./lib/simple_library.dylib 参照元: /Users/Joe/Desktop/./test 理由: 画像が見つかりません Trace/BPT トラップ: 5

実行可能ディレクトリにlibフォルダーを作成し、その中にdylibを入れようとしましたが、同じエラーです。実行可能パス自体にdylibを入れてみましたが、同じエラーです。install_name_tool を使用して、実行可能ファイルの dylib へのパスを変更しようとしましたが、何も変更されず、同じエラーが発生しました。-headerpad_max_install_names を使用してテスト アプリケーションをビルドしてから、install_name_tool を使用してパスを変更しようとしました。それでも何も変わりません。同じエラー。

私がやろうとしていることは、Mac オペレーティング システムでは不可能ですか? 私はこのプラットフォームに不慣れで、Windows と GNU/Linux で問題なく動作するこのようなものに慣れています。また、コマンドラインでこれらすべてを実行しようとしています。私はXCodeを避けたいと思っています。

編集:おっと、私はだまされました。install_name_tool 引数のタイプミスが判明しました。今はうまくいっています。

4

2 に答える 2

1

install_name_tool は適切なツールです。どのdylibotool your_binaryが欠落しているかを確認してください。また、バイナリとリンクされたライブラリが同じアーキテクチャ用にビルドされていることを確認してください。

于 2012-04-17T16:23:48.793 に答える
0

ライブラリが存在するディレクトリが DYLD_LIBRARY_PATH に含まれていることを確認する必要があります。

   DYLD_LIBRARY_PATH
          This is a colon separated list of directories that contain libraries. The dynamic linker searches these directo-
          ries before it searches the default locations for libraries. It allows you to  test  new  versions  of  existing
          libraries.

          For  each library that a program uses, the dynamic linker looks for it in each directory in DYLD_LIBRARY_PATH in
          turn. If it still  can't  find  the  library,  it  then  searches  DYLD_FALLBACK_FRAMEWORK_PATH  and  DYLD_FALL-
          BACK_LIBRARY_PATH in turn.

          Use  the  -L  option to otool(1).  to discover the frameworks and shared libraries that the executable is linked
          against.

動的リンクのさまざまな詳細は、dyld の man ページに記載されています。

于 2012-04-17T16:20:21.810 に答える