我需要在项目目录中创建的文件夹('shared')中发布带有共享库(Ubuntu)的产品 - 即{{>不的共享库{{ 1}},/usr/lib
等。为此,我在/usr/local/lib
文件中完成了此操作,即
.pro
注意,可执行文件与“共享”文件夹位于同一目录中。当我从QtCreator以调试模式启动程序时,一切正常。此外,如果我删除或重命名'共享'中的库,程序将无法启动,并且我已经验证应用程序在其他任何地方都没有找到这些库。但是当我从命令行启动时,我得到了
加载共享库时出现错误:libgslcblas.so.0:无法打开 共享对象文件:没有这样的文件或目录
发生了什么事?
编辑:解决方案是下面的lionbest的变体,正如评论中所提出的那样。出于某种原因,事实证明,在我的平台上LIBS += -Lshared/gsl -lgsl -lgsl_cblas
/ qmake
只允许链接器选项的特定格式,而不是您在人们使用{{1}的其他实例中搜索的那个}}。即,
QMAKE_FLAGS
具体来说,问题是解析器(或链接器)不接受QMAKE_FLAGS
,尽管这似乎对其他人都有效。 Ubuntu 12.04,gcc 4.6.3,Qt 4.8.0,QtCreator 2.4.1“基于Qt 4.7.4”。希望这种体验可以拯救别人同样的挫败感。
答案 0 :(得分:3)
使用环境变量LD_LIBRARY_PATH=shared/gsl
启动程序或向链接器设置添加RPATH:
LIBS += -Wl,-rpath=shared/gsl
如果要为应用程序创建快捷方式,大多数分发(基于Gnome,KDE,LXDE和XFCE)都使用.desktop文件。 QtCreator可能会为您生成一个。您需要编辑或生成它,并在安装过程中放入$ HOME / .local / applications或/ usr / share / applications /。在桌面文件中,您可以添加envirometal varible和起始目录,如下所示:
Exec=/usr/bin/env LD_LIBRARY_PATH=/<path_to_libs>/ /<path>/app -extra_options
如果您需要在特定目录中运行您的应用程序添加行:
Path=/<path_to_your_application_working_dir>
您可以在路径中使用$ {}。