我正在尝试构建一个共享对象库,但是当我生成共享对象库时,它说找不到对象文件。
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
我找到了一个快速解决方案,即将环境变量设置LD_LIBRARY_PATH
为 lib1.o 和 lib2.o 所在的路径,但这需要在每次登录时运行。我想要一个可行的解决方案。为什么找不到目标文件?有没有办法让共享对象文件包含对象文件,这样就不需要指定路径?