【问题标题】:how to set path in bashrc for multiple locations如何在 bashrc 中为多个位置设置路径
【发布时间】:2016-03-14 15:05:54
【问题描述】:

我在两个不同的位置安装相同的库(可能具有不同的发行版本)。现在我正在为两者导出 bashrc 中的路径。在 linux 中,如果我在某个程序中调用库,会采用哪一个? 例如: mylib_version1 安装在 /home/PATH1/lib 中, mylib_version2 安装在 /home/PATH2/lib

我在 bashrc 中,

    export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/home/PATH1/lib
    export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/home/PATH2/lib

调用这个库时,其他程序实际采用的是哪条路径? bashrc 中的排序是如何工作的?

类似地,当 PATH1 只是 /usr/local/lib 时会发生什么(我不在 bashrc 中导出) PATH2 是一些用户定义的路径。 我对某些程序的体验是,如果我将它安装在 /usr/local/bin 如果我使用 /home/PATH/bin 之类的前缀安装并将其导出到 bashrc 中 导出 PATH=$PATH:/home/PATH/bin

它总是取自 /usr/local/bin。

【问题讨论】:

  • 嗨,这是我的问题,如果我(例如)执行 which lhapdf,它会返回路径 /usr/local/bin/lhapdf,即使我在 /usr/local 的两个地方都有它/bin/ 和一些预定义的地方,如 PATH2(在 bashrc 中导出但未使用)
  • 以先到者为准。在这种情况下,它是/home/PATH1/lib
  • 多次使用export 是完全多余的。
  • @4ae1e1 如果其中一个路径是 /usr/local/lib (不在 bashrc 中)而另一个是 /home/PATH1/lib (在 .bashrc 中),会发生什么?我看到它总是来自 /usr/local/lib。有什么方法可以从 bashrc 中获取,即 /home/PATH1/lib ?

标签: bash


【解决方案1】:

如果我对您的理解正确,您的 library.so 有 2 个版本,并且您的二进制文件可能使用 library.so 版本 1 或 2。

要解决这个问题,你必须首先了解库版本机制的含义。所有的库都应该放在同一个地方,你可能会有这样的东西:

/usr/lib/library.so.1.0.0
/usr/lib/library.so.2.0.0

您的二进制文件将根据构建过程中使用的 API 和链接链接到正确的库。

请阅读有关图书馆的更多信息here

【讨论】:

    猜你喜欢
    • 2015-03-28
    • 2013-08-08
    • 1970-01-01
    • 1970-01-01
    • 2016-02-17
    • 1970-01-01
    • 2015-01-02
    • 2021-11-02
    • 2023-04-04
    相关资源
    最近更新 更多