如何在Linux中以不同的方式存储相同的库版本?

时间:2015-12-02 11:53:29

标签: linux qt shared-libraries .so

我有两个不同的Qt项目,其中一个需要用Qt 4.8编译,另一个用Qt 5.4编译。两者都需要使用根据其版本编译的QDeviceWatcher库(即Qt 5下的应用程序应该为Qt 5编译QDeviceWatcher,使用Qt 4.8的应用程序需要使用Qt 4.8编译QDeviceWatcher)。

问题是,在Linux下,.so库文件应该位于同一个“全局”文件夹/usr/local/lib中。因为我正在处理这两个项目,所以我必须让两个.so文件组都位于该文件夹中 - 这是不可能的,因为它们具有相同的名称,最后一个添加只会覆盖前一个。< / p>

至于我现在所做的是每次更改要编译的项目时,我都会使用我需要的编译更新库文件,但这显然是不可取的。

有没有办法解决这个问题?

我遇到的唯一两种方法是创建一个假的新版本的库(目前是2.0.0,所以我可以创建版本2.0.1)并为每个不同的Qt版本编译每个lib版本(但当然这将是一个混乱,我的意思是,这是一个假的版本!)或将.so文件放在靠近项目的目录中,这样文件就会在那里而不是在全局目录/usr/local/lib中查找。但是,在我看来,这打破了全球所有和新应用程序都可以使用库的想法。谷歌并没有帮助我。

1 个答案:

答案 0 :(得分:1)

鉴于QDeviceWatcher是第三方应用,我要做的是将其安装在/usr/local/lib文件夹之外,而不是安装到项目目录中,并更新我的.pro以指向它直。