ldconfig が libprotobuf.so を見つけられない

ldconfig が libprotobuf.so を見つけられない

インストールしようとしていますプロトコルバッファライブラリを Redhat システム (Amazon EC2 の Linux ビルド) にインストールしました。configuremake、 をmake install問題なく実行し、.soライブラリが にコピーされました。Redhat には にディレクトリ/usr/local/libが含まれていないため、それを追加してから を実行してリンクを更新しました。/usr/local/lib/etc/ld.so.confldconfig

問題は、何らかの理由で、ディレクトリ内にあるにもかかわらず、ldconfigが取得されないことです。libprotobuf.so/usr/local/lib

出力は次のとおりですls -l /usr/local/lib:

total 61336
-rw-r--r-- 1 root root 17654940 Mar 26 02:39 libprotobuf.a
-rwxr-xr-x 1 root root      994 Mar 26 02:39 libprotobuf.la
-rw-r--r-- 1 root root  1948106 Mar 26 02:39 libprotobuf-lite.a
-rwxr-xr-x 1 root root     1029 Mar 26 02:39 libprotobuf-lite.la
lrwxrwxrwx 1 root root       25 Mar 26 02:39 libprotobuf-lite.so -> libprotobuf-lite.so.7.0.0
lrwxrwxrwx 1 root root       25 Mar 26 02:39 libprotobuf-lite.so.7 -> libprotobuf-lite.so.7.0.0
-rwxr-xr-x 1 root root   893083 Mar 26 02:39 libprotobuf-lite.so.7.0.0
lrwxrwxrwx 1 root root       20 Mar 26 02:39 libprotobuf.so -> libprotobuf.so.7.0.0
lrwxrwxrwx 1 root root       20 Mar 26 02:39 libprotobuf.so.7 -> libprotobuf.so.7.0.0
-rwxr-xr-x 1 root root  7326093 Mar 26 02:39 libprotobuf.so.7.0.0
-rw-r--r-- 1 root root 25883264 Mar 26 02:39 libprotoc.a
-rwxr-xr-x 1 root root     1010 Mar 26 02:39 libprotoc.la
lrwxrwxrwx 1 root root       18 Mar 26 02:39 libprotoc.so -> libprotoc.so.7.0.0
lrwxrwxrwx 1 root root       18 Mar 26 02:39 libprotoc.so.7 -> libprotoc.so.7.0.0
-rwxr-xr-x 1 root root  9071740 Mar 26 02:39 libprotoc.so.7.0.0
drwxr-xr-x 2 root root     4096 Mar 26 02:39 pkgconfig

出力は次のとおりですldconfig -v | grep protobuf:

libprotobuf.so.7 -> libprotobuf.so.7.0.0
libprotobuf-lite.so.7 -> libprotobuf-lite.so.7.0.0

libprotobufリンカーに認識してもらうにはどうすればいいですか?

編集: ライブラリを直接リンクしようとすると、次のエラーが発生します。

ldconfig: Ignored file /usr/local/lib/libprotobuf.so since it is not a regular file.

libprotobuf.so.7.0.0シンボリックリンクではなくなるようにコピーしてみるlibprotobuf.soとエラーは修正されましたが、リンカーはまだ を見つけることができませんlibprotobuf

答え1

ld.so.confランタイム動的リンカーによってのみ使用されます。ldはまったく使用されません -/usr/local/libリンカー検索ディレクトリとして渡す必要があります (直接ld呼び出す場合は直接、またはコンパイラ経由で)。

ld、GCC (または clang、およびおそらく他の多くのコンパイラ)の場合は、-Lフラグを使用してそれを行います。

関連情報