
インストールしようとしていますプロトコルバッファライブラリを Redhat システム (Amazon EC2 の Linux ビルド) にインストールしました。configure
、make
、 をmake install
問題なく実行し、.so
ライブラリが にコピーされました。Redhat には にディレクトリ/usr/local/lib
が含まれていないため、それを追加してから を実行してリンクを更新しました。/usr/local/lib
/etc/ld.so.conf
ldconfig
問題は、何らかの理由で、ディレクトリ内にあるにもかかわらず、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
フラグを使用してそれを行います。