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?
Tags gcc compiling shared-library c linux