ドキュメントに従って、GCCは共有ライブラリをリンクするためのLD_LIBRARY_PATHのパスを見ていますが、私の場合は無視されます! gcc main.c -lfoo
を返すエラー: -LD_LIBRARY_PATHはGCCによって無視されます
echo $LD_LIBRARY_PATH
>:/home/mehrdad/usr/lib
私は "/home/mehrdad/usr/lib
" しかし、中libfoo.so
ている(そうLD_LIBRARY_PATH
がcurrectly設定されている)
/usr/bin/ld: cannot find -lfoo
collect2: error: ld returned 1 exit status
ので、問題は何であるの? LD_LIBRARY_PATH
deprecated ???!
しかし、私は成功し、明示的なコマンドを使用してリンクすることができます。
gcc main.c -L/home/mehrdad/usr/lib -lfoo
とも私は成功しただけではa.outを実行することができます。
./a.out
LD_LIBRARY_PATHがOSライブラリローダによって尊敬されているようだが、 GCCではない!
私の環境: OS:CentOSの7 コンパイラ:GCC(GCC)4.8.5 20150623(Red Hatの4.8.5-4)
実行可能ファイル(実際にはダイナミックリンカ)が実行時に、つまりプログラムを起動するときに、大体、 'LD_LIBRARY_PATH'が使用されます。コンパイル時に、ライブラリパスは '-L'オプションで設定する必要があります。 –
"* docsによると、GCCは共有ライブラリをリンクするためのLD_LIBRARY_PATH内のパスを探します*"あなたはそれらのドキュメントにリンクできますか? (おそらく、あなたは 'LIBRARY_PATH'と' LD_LIBRARY_PATH'を混同していますか?おそらくあなたのドキュメントがあります。) –
皆さんありがとう!私は正直なところ、LD_LIBRARY_PATHについて聞いただけです! – mehrdad