ldconfig não encontrando libprotobuf.so

2

Estou tentando instalar a biblioteca protobuf em um sistema Redhat (compilação Linux do Amazon EC2). Eu executei configure , make e make install sem um problema e as bibliotecas .so foram copiadas para /usr/local/lib . Como o Redhat não inclui o diretório /usr/local/lib em /etc/ld.so.conf , eu o adicionei e depois executei o ldconfig para atualizar as ligações.

Meu problema é que, por qualquer motivo, ldconfig não está pegando libprotobuf.so , mesmo estando no diretório /usr/local/lib .

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 obter 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.

Eu tentei copiar libprotobuf.so.7.0.0 over libprotobuf.so para que ele não seja mais um link simbólico, que corrigiu o erro, mas meu vinculador ainda não encontrou libprotobuf .

    
por Kai 26.03.2012 / 04:58

1 resposta

1

ld.so.conf é usado apenas pelo vinculador dinâmico de tempo de execução. ld não nos interessa - você precisa passar /usr/local/lib como um diretório de pesquisa do vinculador (diretamente para ld se estiver chamando diretamente ou por meio do seu compilador).

Para ld , GCC (ou clang e possivelmente alguns outros compiladores), você faz isso com o -L flag.

    
por 26.03.2012 / 10:21