Unix问题:自动识别本地安装的库的路径
我在Fedora Linux机器上工作。Unix问题:自动识别本地安装的库的路径
我有一大堆的二进制文件和库,我安装在我的主目录下。
我想设置我的系统,所以安装软件的功能与我的相同,就好像root用户在没有前缀的情况下安装软件一样。
我可以运行安装在〜/ local/bin中的二进制文件,只需将该目录添加到我的PATH变量中,但是如何链接到〜/ local/lib和〜/ local/lib64中的库?
是否有类似于LD_LIBRARY_PATH变量的东西,但在编译时而不是运行时找到库?我不想担心通过L〜/ local/lib或通过./configure脚本中的标志将路径显式传递给编译器。
将LIBRARY_PATH
环境变量设置为$HOME/local/lib:$HOME/local/lib64
。您还可以设置环境变量C_INCLUDE_PATH
和CPLUS_INCLUDE_PATH
以在$HOME/local/include
中查找包含文件。这些是GCC用来查找库和包含文件的环境变量,因此它们可能不适用于其他编译器。
除了设置LD_LIBRARY_PATH之外,还可以查看/etc/ld.so.conf(适用于所有用户,甚至是root用户)。如果使用/etc/ld.so.conf,请考虑系统的安全性;如果人们从目录中运行图书馆,他们相信你不要惹他们。
有两种方法来获取库在运行时的工作:
如果图书馆只为您的使用,并且它不是一个多用户系统,然后使用
$LD_LIBRARY_PATH
环境变量如果您是系统中唯一的用户,则可以将您的目录添加到
/etc/ld.so.conf
或/etc/ld.so.conf.d
中的新文本文件中。之后运行ldconfig
重建系统的共享库缓存
在编译时事情并不那么清楚。 GNU链接器支持-rpath
参数和$LD_RUN_PATH
环境变量来指定库路径。但是,在每种情况下,结果路径都会以二进制格式硬编码,因此如果您随后想要移动文件,则必须重新编译它们。
我相信使用./configure
样式脚本构建的程序应该能够找到您的$LD_RUN_PATH
中的任何库,但尚未能够对其进行测试。
无论是哪种情况,运行./configure --prefix=${HOME}/local
应允许configure
解析包含目录和库。
您的意思是LD_LIBRARY_PATH? – 2008-11-04 07:20:47