ldconfig não encontra libprotobuf.so

ldconfig não encontra libprotobuf.so

Estou tentando instalar oprotobufbiblioteca em um sistema Redhat (compilação Linux do Amazon EC2). Executei configure, make, e make installsem problemas, e as .sobibliotecas foram copiadas para /usr/local/lib. Como o Redhat não inclui o /usr/local/libdiretório /etc/ld.so.conf, eu o adicionei e corri ldconfigpara atualizar as ligações.

Meu problema é que, por algum motivo, ldconfignão está atendendo libprotobuf.so, mesmo estando no /usr/local/libdiretó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 libprotobufreconhecido 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.0para libprotobuf.soque 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. ldisso não acontece - você precisa passar /usr/local/libcomo um diretório de pesquisa do vinculador (diretamente, ldse 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 -Lsinalizador.

informação relacionada