在app的QtCreator .pro项目文件中我指定了一个我想要使用的共享库(linux上的libasdf.so)。但QtCreator无法找到该库。
目录结构(我不允许更改此内容)如下:
project/apps/app --> this is $$PWD
app.pro
project/build
libasdf.so.1.0.0 --> the actual binary
libasdf.so.1.0 ⎫
libasdf.so.1 ⎬--> symbolic links to the binary
libasdf.so ⎭
project/asdf/src
project/asdf/src/include
project/work --> this is where the app is built and run
在app.pro文件中我有:
DESTDIR = $$PWD/../../work
# library headers
# $$PWD is directory containing this .pro file
INCLUDEPATH += $$PWD/../../asdf/src/
DEPENDPATH += $$PWD/../../asdf/src/
# library binaries
unix: LIBS += -L$$PWD/../../build -lasdf
由于某些原因,当我构建时,我收到此错误:
Starting /usr/bin/primusrun...
./app: error while loading shared libraries: libmarion.so.1:
cannot open shared object file: No such file or directory
我必须使用/usr/bin/primusrun ./app
使用自定义运行配置运行应用程序(请参阅bumblebee项目,NVidia Optimus的一种替代方案)才能使用我的专用图形设备。
请注意,libasdf.so
中安装了/usr/lib
后,它才有效。
在QtCreator的项目“运行”配置中,工作目录设置为project/work
。
但为什么没有添加库路径?
答案 0 :(得分:0)
当我写这个问题时,我在默认的运行配置(没有/usr/bin/primusrun
)中偶然发现了这个复选框,其中说
☑将构建库搜索路径添加到LD_LIBRARY_PATH
勾选后,它运行正常。
但是我意识到在自定义的运行配置窗口中,没有这样的复选框,并且通过LIBS +=
设置的库路径从未添加到LD_LIBRARY_PATH
!
通过手动将其添加到环境变量,它运行正常!
但是我想知道,有没有办法自动化这个,这样.pro文件中的定义就足够了?
答案 1 :(得分:0)
默认情况下,您添加到LD_LIBRARY_PATH
的路径将被添加到运行环境变量的.pro.user
中。
但是有时这些更改不会立即发生。
要解决此问题:
LD_LIBRARY_PATH
文件或者,如果您不想立即重启qtcreator,也可以随时将路径手动添加到{{1}}。