
Estoy intentando instalar elprotobufbiblioteca en un sistema Redhat (compilación Linux de Amazon EC2). Ejecuté configure
, make
y make install
sin problemas, y las .so
bibliotecas se copiaron en /usr/local/lib
. Como Redhat no incluye el /usr/local/lib
directorio /etc/ld.so.conf
, lo agregué y luego ejecuté ldconfig
para actualizar los enlaces.
Mi problema es que, por alguna razón, ldconfig
no contesta libprotobuf.so
, aunque esté en el /usr/local/lib
directorio.
Aquí está el resultado de 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
Aquí está el resultado de ldconfig -v | grep protobuf
:
libprotobuf.so.7 -> libprotobuf.so.7.0.0
libprotobuf-lite.so.7 -> libprotobuf-lite.so.7.0.0
¿Qué tengo que hacer para que libprotobuf
el enlazador me reconozca?
Editar: Cuando intento vincular la biblioteca directamente, aparece este error:
ldconfig: Ignored file /usr/local/lib/libprotobuf.so since it is not a regular file.
Intenté copiarlo libprotobuf.so.7.0.0
para libprotobuf.so
que ya no sea un enlace simbólico, lo que solucionó el error, pero mi vinculador aún no puede encontrarlo libprotobuf
.
Respuesta1
ld.so.conf
solo lo utiliza el vinculador dinámico en tiempo de ejecución. ld
no nos parece eso en absoluto: debe pasarlo /usr/local/lib
como un directorio de búsqueda del vinculador (ya sea directamente ld
si lo está llamando directamente o mediante su compilador).
Para ld
, GCC (o clang, y posiblemente algunos otros compiladores), lo haces con la -L
bandera.