我需要在我在项目目录中创建的文件夹('shared')中发布一个带有共享库(Ubuntu)的产品——即不在/usr/lib
,等中的共享库/usr/local/lib
。为此我已经完成了这个在.pro
文件中,即
LIBS += -Lshared/gsl -lgsl -lgsl_cblas
注意可执行文件与“共享”文件夹位于同一目录中。当我从 QtCreator 以调试模式启动程序时,一切正常。此外,如果我删除或重命名“共享”中的库,程序将无法启动,而且我已经验证该应用程序在其他任何地方都找不到这些库。但是当我从命令行启动时,我得到
加载共享库时出错:libgslcblas.so.0:无法打开共享对象文件:没有这样的文件或目录
这是怎么回事?
编辑:该解决方案是下面 lionbest 的变体,如评论中所述。出于某种原因,事实证明,在我的平台上qmake
/QMAKE_FLAGS
只允许链接器选项的特定格式,而不是您在谷歌上搜索人们使用过的其他实例的那种格式QMAKE_FLAGS
。即,
QMAKE_FLAGS += "-Wl,-rpath,\'\$$ORIGIN/shared/gsl\'"
QMAKE_LFLAGS_RPATH=
具体来说,问题在于解析器(或链接器)不会接受-rpath=...
,尽管这似乎对其他人有用。Ubuntu 12.04、gcc 4.6.3、Qt 4.8.0、QtCreator 2.4.1“基于 Qt 4.7.4”。希望这次经历可以拯救其他人同样的挫败感。