
Estou tentando instalar oprotobufbiblioteca em um sistema Redhat (compilação Linux do Amazon EC2). Executei configure
, make
, e make install
sem problemas, e as .so
bibliotecas foram copiadas para /usr/local/lib
. Como o Redhat não inclui o /usr/local/lib
diretório /etc/ld.so.conf
, eu o adicionei e corri ldconfig
para atualizar as ligações.
Meu problema é que, por algum motivo, ldconfig
não está atendendo libprotobuf.so
, mesmo estando no /usr/local/lib
diretório.
Aqui está a saída 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
Aqui está a saída de ldconfig -v | grep protobuf
:
libprotobuf.so.7 -> libprotobuf.so.7.0.0
libprotobuf-lite.so.7 -> libprotobuf-lite.so.7.0.0
O que preciso fazer para ser libprotobuf
reconhecido pelo vinculador?
Editar: Quando tento vincular a biblioteca diretamente, recebo este erro:
ldconfig: Ignored file /usr/local/lib/libprotobuf.so since it is not a regular file.
Tentei copiar libprotobuf.so.7.0.0
para libprotobuf.so
que não fosse mais um link simbólico, o que corrigiu o erro, mas meu vinculador ainda não consegue encontrar o arquivo libprotobuf
.
Responder1
ld.so.conf
é usado apenas pelo vinculador dinâmico de tempo de execução. ld
isso não acontece - você precisa passar /usr/local/lib
como um diretório de pesquisa do vinculador (diretamente, ld
se estiver chamando-o diretamente, ou por meio do seu compilador).
Para ld
, GCC (ou clang, e possivelmente alguns outros compiladores), você faz isso com o -L
sinalizador.