Biblioteca de objetos não encontrada pela biblioteca de objetos compartilhados

0

Estou tentando construir uma biblioteca de objetos compartilhada, mas quando produzo a biblioteca de objetos compartilhados, ela diz que o arquivo de objeto não foi encontrado.

OSError: lib1.o: cannot open shared object file: No such file or directory

Eu então executei o comando ldd para verificar quais são as dependências

linux-vdso.so.1 =>  (0x00007fff47dff000)
lib1.o => not found
lib2.o => not found
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f61023db000)
/lib64/ld-linux-x86-64.so.2 (0x00007f610297c000)

Estou compilando o gcc com o seguinte comando.

gcc -I ../../path1/include -I ../../path2/include --shared -fPIC file1.c -o lib1.o gcc -I ../../path1/include -I ../../path3/include --shared -fPIC file2.c -o lib2.o gcc lib1.o lib2.o -shared -o lib2.so

Eu encontrei uma solução rápida que é definir a variável de ambiente LD_LIBRARY_PATH para o caminho que lib1.o e lib2.o estão localizados, mas isso precisa ser executado em cada login. Eu quero uma solução onde isso simplesmente funcione. Por que não consegue encontrar os arquivos objeto? Existe uma maneira de os arquivos de objetos compartilhados conterem os arquivos de objeto, portanto, nenhuma especificação de caminho é necessária?

    
por tyleax 18.01.2018 / 22:01

0 respostas