コンパイル時に共有ライブラリの依存関係を特定する

コンパイル時に共有ライブラリの依存関係を特定する

コンパイル時にビルドされるバイナリに、実行時に特定のライブラリを探すパスを伝えることは可能ですか?たとえば、非標準の場所にある共有ライブラリへのリンク時に結果バイナリを実行するには、その共有ライブラリのパスをLD_LIBRARY_PATHに追加する必要があります。するオプションです。

Ubuntu 14.04、GCC。

答え1

-Wl,-rpath,'/path/to/library'はい、GCCにパラメータを追加することで可能です。これは、リンカーが-rpath '/path/to/library'呼び出されたときに実行するように指示します。

通常、次を追加して、ほとんどのautoconfベースのmakeファイルにそれを追加できます。

LDFLAGS=-Wl,-rpath=/path/to/library

コンパイル時の環境。

いつものように、WikipediaのRPATH記事すべての詳細があります。

答え2

はい。これらの手順は、使用されるコンパイラとリンカによって異なります。

GNU cc コンパイラの場合、追加すると、-Wl,-rpath=/home/me/libランタイムがリンクする必要があるライブラリを検索する場所に /home/me/lib が追加されます。

関連情報