
Ich versuche dieprotobufBibliothek auf einem Redhat-System (Linux-Build von Amazon EC2). Ich habe configure
, make
, und make install
ohne Probleme ausgeführt und die .so
Bibliotheken wurden nach kopiert . Da Redhat das Verzeichnis /usr/local/lib
nicht in einschließt , habe ich es hinzugefügt und dann ausgeführt, um die Verknüpfungen zu aktualisieren./usr/local/lib
/etc/ld.so.conf
ldconfig
Mein Problem besteht darin, dass aus irgendeinem Grund ldconfig
nichts abgeholt wird libprotobuf.so
, obwohl es sich im /usr/local/lib
Verzeichnis befindet.
Hier ist die Ausgabe von 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
Hier ist die Ausgabe von ldconfig -v | grep protobuf
:
libprotobuf.so.7 -> libprotobuf.so.7.0.0
libprotobuf-lite.so.7 -> libprotobuf-lite.so.7.0.0
Was muss ich tun, um libprotobuf
vom Linker erkannt zu werden?
Bearbeiten: Wenn ich versuche, die Bibliothek direkt zu verknüpfen, erhalte ich diesen Fehler:
ldconfig: Ignored file /usr/local/lib/libprotobuf.so since it is not a regular file.
Ich habe versucht, es durch Kopieren libprotobuf.so.7.0.0
nicht libprotobuf.so
länger als symbolischen Link zu verwenden. Dadurch wurde der Fehler behoben, aber mein Linker kann es immer noch nicht finden libprotobuf
.
Antwort1
ld.so.conf
wird nur vom dynamischen Laufzeitlinker verwendet. ld
Das funktioniert überhaupt nicht – Sie müssen es /usr/local/lib
als Suchverzeichnis des Linkers übergeben (entweder direkt, ld
wenn Sie es direkt aufrufen, oder über Ihren Compiler).
Bei ld
GCC (oder Clang und möglicherweise einigen anderen Compilern) tun Sie dies mit der -L
Flagge.