問題タブ [install-name-tool]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
5984 参照

macos - clang、リンク時に依存する共有ライブラリのインストール名を変更

関連しますが、質問には答えません:

OSX では、パッケージャー マネージャーによって提供される動的ライブラリが非標準ディレクトリにインストールされています。この install_name は単なるファイル名です。例えば:

を使用して libfoo.dylib の install_name を (絶対パス、@RPATH、...) 変更したくありませんinstall_name_tool -id

次に、プログラムをライブラリにリンクします。たとえば、次のようになります。

プログラムを実行できません:

なぜなら:

依存ライブラリのパスを変更できます。

それで:

プログラムは次を実行できます。

コマンドに追加できるclangオプションはありますか:

実行する必要を避けるために:

注:変更したくない、DYLD_LIBRARY_PATHまたはそのような他の環境変数。

?

0 投票する
1 に答える
2626 参照

ld - install_name_tool は変更を使用できません

でファイルを再リンクする必要がありますinstall_name_tool。問題のファイルにより、dylib パスの 1 つを変更できましたが、2 つ目 (7 つのうち) を変更すると、次のエラーが発生します。

グーグルで調べたところ、ファイル内に新しいパスを入れるのに十分なスペースがなく、ldツールを使用するか、libtoolこれを修正できる可能性があることがわかりました。しかし、私はその方法を理解することができません。このライブラリのソース コードがないため、再コンパイルできません。

このファイルのすべての dylib パスを更新する方法はありますか? どんな助けでも大歓迎です!


私はosx 10.10を使用しています使用しているコマンド:install_name_tool -change old/dylib/path.dylib new/dylib/path.dylib file/to/update

0 投票する
1 に答える
1918 参照

python - Python 用の MySQL パッケージのインポート中にエラーが発生しました

エラーが表示されますが、Python、より具体的にはFlaskでMySQLモジュールをインポートしようとしています。アプリケーションで仮想環境を使用しています。エラーは次のとおりです。

私はそれが言うエラーで見ることができますLibrary not loaded: /Library/Python/2.7/site-packages/_mysql.so。仮想環境を使用しているため、パスが正しくありません。である必要があります/lib/python2.7/site-packages/_mysql.so

これを変更する方法はありますか?ありがとう。

編集:

ライブラリの場所を変更するための端末コマンドが OSX にあることがわかりました。

Enterキーを押すと、次のようになります。

コマンドを間違って入力しているようには見えませんが、何が問題なのですか?

0 投票する
1 に答える
3351 参照

macos - install_name_tool を使用して dylib ファイルのパスを修正します

OS を El Capitan にアップデートした後、C++ プロジェクトをコンパイルしようとしています。ただし、途中でいくつかの障害に直面しました。

問題は、それpathBが存在しないことです。私が実行するotool -L pathA/libIceUtil.34.dylibと、私は得る

install_name_tool -change pathB/libIceUtil.34.dylib pathA/libIceUtil.34.dylib pathA/libIceUtil.34.dylib問題を解決しませんでした。の使用について言及している記事libtoolがあります。この問題を解決する方法はありますか?

0 投票する
1 に答える
569 参照

c++ - ブーストのビルド時に「dll-path」は効果がありません

dll-pathブーストをコンパイルするときにオプションを提供することで、コンパイルされたブースト ライブラリに完全な実行パスを持たせることを目指しています。

ただし、$(pwd)/buildフォルダー内のライブラリをチェックすると、次のようになります。

つまり、lib 名のフル パスの代わりに、lib 名 (libboost_system.dylib) だけがあります。オプションをどのように使用する必要がありますか、またはこれを達成するための「公式」の方法はありますか (各ライブラリdll-pathで手動で実行するスクリプトを使用する以外に)?install_name_tool

0 投票する
1 に答える
7062 参照

macos - dylib ライブラリ パスを作成し、アプリケーションで使用します

Mac OS X El Capitan (10.11.x) でライブラリを作成し、qt 作成者によって別のアプリケーションで使用したいので、この設定で qt で簡単なライブラリを作成しました。

ご覧のとおり、MyFrm フレームワークに「DynminLinkingLib」ライブラリを作成しました。その後、ライブラリを使用する Qt アプリケーションを作成しました。

Qt でアプリケーションを実行すると、次のエラーが表示されます。

Qt プロジェクトでこのエラーを解決するために、DYLD_LIBRARY_PATH変数をに設定する/System/Library/Frameworks/MyFrm.framework/dylibとうまく機能しますが、バンドル アプリケーションを実行すると機能せず、次のエラーが表示されます。

ここに画像の説明を入力

これは、「libDynminLinkingLib.1.dylib」がアプリケーション パスにないためです。

2 つの質問があります。

  1. この問題を解決する方法は知っていますinstall_name_toolが、qmake と .pro ファイルでこの問題を解決したいと考えています。では、pro config ファイルでこの問題を解決するにはどうすればよいでしょうか?

  2. エルキャピタンではDYLD_LIBRARY_PATH、セキュリティ上の理由からご利用いただけません。それを使用するには、SIP (システム整合性保護) を無効にする必要があります。SIPを非アクティブ化せずにDYLD_LIBRARY_PATHを使用する方法はありますか?