Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Unix问题:自动识别本地安装库的路径_Unix_Shared Libraries - Fatal编程技术网

Unix问题:自动识别本地安装库的路径

Unix问题:自动识别本地安装库的路径,unix,shared-libraries,Unix,Shared Libraries,我在FedoraLinux机器上工作 我在我的主目录下安装了大量的二进制文件和库 我想设置我的系统,以便在那里安装软件的方式(对我来说)与root用户在没有前缀的情况下安装软件的方式相同 通过将dir添加到PATH变量中,我可以运行安装在~/local/bin中的二进制文件,但是链接到~/local/lib和~/local/lib64中的库怎么样 是否有类似于LD_LIBRARY_PATH变量的东西,但在编译时而不是运行时查找库?我不想担心通过L~/local/lib或通过./configure

我在FedoraLinux机器上工作

我在我的主目录下安装了大量的二进制文件和库

我想设置我的系统,以便在那里安装软件的方式(对我来说)与root用户在没有前缀的情况下安装软件的方式相同

通过将dir添加到PATH变量中,我可以运行安装在~/local/bin中的二进制文件,但是链接到~/local/lib和~/local/lib64中的库怎么样


是否有类似于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
    ,以重建系统的共享库缓存

  • 在编译时,事情并不那么清楚。GNU链接器支持
    -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的地方。谢谢