質問

そこで、私はプロジェクトを構築しており、コンパイルされたライブラリ(.dylibまたは.so)の関数を使用しています。私は適切な場所にヘッダーとライブラリファイル(これはすべてQtrootの一部です)を持っていますが、Xcodeでプロジェクトを構築しようとすると、デバッガーエラーが発生します。

dyld:Library not Loaded: @rpath/librio.so:/users/paulthompson/documents/build product/debug/macheliossim.app/contents/macos/macheliossim理由から参照データは一時的に利用できませんが、「続行」後に再試行します。 (現在、ローダーを呼び出すことはできません、それはロックされています。)

これで、構築されたプログラム自体は、ファインダーから開くと正常に実行されますが、Xcodeから実行しようとするたびに、それは私を覆います。このrpathのことは何ですか、そしてなぜデバッガーはライブラリを見つけることができないのですか?

役に立ちましたか?

解決

http://en.wikipedia.org/wiki/rpath_(linking)

それは、共有Libsを見つけるためにバイナリに保存されたパスです。 Finderからアプリを開始すると、おそらくアプリバンドルですか?アプリバンドルが作成されると、共有ライブラリがアプリバンドルにコピーされ、バンドルされたライブラリへのパスが相対的になります。 (@executable_path /../ freamworks/foobar)。 Finderから機能するバージョンをどのように作成しましたか?

上記のエラーは、リンク時間に発生しますか、それともXcodeからアプリケーションを起動するときに発生しますか? (後者の場合、dyld_library_pathでお試しください)

また、.dylibの代わりにLibrioの.so拡張は少し疑わしいように見えます。

他のヒント

この(QT作成者)のように、リンク段階でRPATを追加します。例:

libs += -l/usr/locial/root/lib -lgui -lcore -lcint -lrio -lnet -lhist -lgraf -lgraf3d -lgpad -ltree -lrint -lpostscript -lmatrix -lphysics -lmathcore -lthread -lpthread -wl -rpath、/usr/local/root/lib -lm -ldl

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top