ldconfigがlibprotobuf.soを見つけることができません

ldconfigがlibprotobuf.soを見つけることができません

インストールしようとしています。生バッファRedhatシステムのライブラリ(Amazon EC2のLinuxバージョン)は問題なく実行しましたが、configureライブラリがRedhatに含まれていないため、ディレクトリを追加してからリンクを更新しました。makemake install.so/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直接呼び出す場合は直接またはコンパイラを介して)。

ldGCC (または clang およびおそらく他の多くのコンパイラ) の場合、この-Lフラグを使用してこれを行うことができます。

関連情報