공유 개체 라이브러리를 구축하려고 하는데 공유 개체 라이브러리를 생성할 때 개체 파일을 찾을 수 없다는 메시지가 나타납니다.
OSError: lib1.o: cannot open shared object file: No such file or directory
그런 다음 명령을 실행하여 ldd
종속성이 무엇인지 확인합니다.
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)
다음 명령을 사용하여 gcc를 컴파일하고 있습니다.
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
lib1.o 및 lib2.o가 있는 경로로 환경 변수를 설정하는 빠른 솔루션을 찾았지만 LD_LIBRARY_PATH
로그인할 때마다 이 작업을 실행해야 합니다. 나는 효과적인 솔루션을 원합니다. 대상 파일을 찾을 수 없는 이유는 무엇입니까? 경로를 지정할 필요가 없도록 공유 객체 파일에 객체 파일을 포함시키는 방법이 있습니까?