Compiler errors 使用LD_LIBRARY_PATH而不是LIBRARY_PATH的编译器

Compiler errors 使用LD_LIBRARY_PATH而不是LIBRARY_PATH的编译器,compiler-errors,path,linker,shared-libraries,Compiler Errors,Path,Linker,Shared Libraries,这可能吗?根据什么,编译器在编译时应该在LIBRARY\u PATH中给出的目录中查找库,但我编译的这段代码抱怨说,在我在LD\u LIBRARY\u PATH中设置路径之前,它找不到库。我知道我还没有给出任何具体的信息,但我想先核实一下我的假设: 我试图编译的是一个使用lib1.so的可执行文件,而lib1.so又使用lib2.so。它是否可能在LIBRARY_PATH中查找lib1.so(直接链接到可执行文件的lib1.so),而在LD_LIBRARY_PATH中查找lib2.so(链接库使

这可能吗?根据什么,编译器在编译时应该在LIBRARY\u PATH中给出的目录中查找库,但我编译的这段代码抱怨说,在我在LD\u LIBRARY\u PATH中设置路径之前,它找不到库。我知道我还没有给出任何具体的信息,但我想先核实一下我的假设:

我试图编译的是一个使用lib1.so的可执行文件,而lib1.so又使用lib2.so。它是否可能在LIBRARY_PATH中查找lib1.so(直接链接到可执行文件的lib1.so),而在LD_LIBRARY_PATH中查找lib2.so(链接库使用但未直接链接)?在任何情况下:这是一种常见的行为,还是表示我的makefile中的库依赖项中存在一些不方便的地方

编辑:库的编译命令

[list of objects] -fPIC -shared -Wl,-rpath='$ORIGIN/' -l2.so -o lib1.so

你可以在编译lib1时链接lib2.so。那么你是什么意思?在编译lib1.so时,我正在链接lib2.so。是的,我正在这样做。lib1.so编译行的简化版本是:
[对象列表]-fPIC-shared-Wl,-rpath='$ORIGIN/'-L/lib2.so-o lib1.so
No,应该是
-l2
/full/path/to/lib2.so
,而不是
-L/lib2.so