我在两个不同的位置安装相同的库(可能有不同的发行版本)。现在我在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之类的 export PATH = $ PATH:/ home / PATH / bin
它始终来自/ usr / local / bin。
答案 0 :(得分:2)
如果我理解正确,您library.so
有两个版本,并且您有一个可能使用library.so
版本1或2的二进制文件。
要解决这个问题,首先必须了解库版本机制的含义。所有图书馆都应该放在同一个地方,你可能会有类似的东西:
/usr/lib/library.so.1.0.0
/usr/lib/library.so.2.0.0
根据在构建过程中使用的API和链接,您的二进制文件将链接到正确的库。
请阅读有关图书馆here
的更多信息