Unix问题:自动识别本地安装库的路径
我在FedoraLinux机器上工作 我在我的主目录下安装了大量的二进制文件和库 我想设置我的系统,以便在那里安装软件的方式(对我来说)与root用户在没有前缀的情况下安装软件的方式相同 通过将dir添加到PATH变量中,我可以运行安装在~/local/bin中的二进制文件,但是链接到~/local/lib和~/local/lib64中的库怎么样Unix问题:自动识别本地安装库的路径,unix,shared-libraries,Unix,Shared Libraries,我在FedoraLinux机器上工作 我在我的主目录下安装了大量的二进制文件和库 我想设置我的系统,以便在那里安装软件的方式(对我来说)与root用户在没有前缀的情况下安装软件的方式相同 通过将dir添加到PATH变量中,我可以运行安装在~/local/bin中的二进制文件,但是链接到~/local/lib和~/local/lib64中的库怎么样 是否有类似于LD_LIBRARY_PATH变量的东西,但在编译时而不是运行时查找库?我不想担心通过L~/local/lib或通过./configure
是否有类似于LD_LIBRARY_PATH变量的东西,但在编译时而不是运行时查找库?我不想担心通过L~/local/lib或通过./configure脚本中的标志显式地将路径传递给编译器。将
LIBRARY\u path
环境变量设置为$HOME/local/lib:$HOME/local/lib64
。您还可以设置环境变量C_INCLUDE_PATH
和CPLUS_INCLUDE_PATH
以在$HOME/local/INCLUDE
中查找包含文件。这些是GCC用于查找库和包含文件的环境变量,因此它们可能无法与其他编译器一起使用。除了设置LD_LIBRARY_PATH,您还可以查看/etc/LD.so.conf(适用于所有用户,甚至根用户)。如果使用/ETC/LD.SO.CONF,也要考虑系统的安全性;如果人们从您的目录运行库,他们相信您不会干扰他们。有两种方法可以让库在运行时正常工作:
$LD\u LIBRARY\u PATH
环境变量/etc/ld.so.conf
,或添加到/etc/ld.so.conf.d
中的新文本文件中。然后运行ldconfig
,以重建系统的共享库缓存-rpath
参数和$LD\u RUN\u PATH
环境变量来指定库路径。但是,在每种情况下,结果路径都以二进制硬编码结束,因此,如果随后要移动文件,则必须重新编译它们
我相信,使用/configure
样式脚本构建的程序应该能够找到$LD\u RUN\u路径中的任何库,但还无法对其进行测试
在这两种情况下,运行/configure--prefix=${HOME}/local
应该允许configure
解析包含目录和库。您是指LD_LIBRARY_路径吗?否。LD_LIBRARY_路径用于加载库;GCC使用LIBRARY\u PATH来查找它们。哦,谢谢,这是最好的答案,$LIBRARY\u PATH是我需要让ld查找libs的地方。谢谢