Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
QtCreator找不到本地共享库。因此_Qt_Build_Shared Libraries - Fatal编程技术网

QtCreator找不到本地共享库。因此

QtCreator找不到本地共享库。因此,qt,build,shared-libraries,Qt,Build,Shared Libraries,在某个应用程序的QtCreator.pro项目文件中,我指定了一个要使用的共享库(linux上的libasdf.so)。然而,我找不到图书馆 目录结构(我不允许更改)如下所示: 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 ⎬-->

在某个应用程序的QtCreator.pro项目文件中,我指定了一个要使用的共享库(linux上的libasdf.so)。然而,我找不到图书馆

目录结构(我不允许更改)如下所示:

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
(参见大黄蜂项目,NVidia Optimus的一种替代品)才能使用我的专用图形设备。 请注意,当
libasdf.so
安装在
/usr/lib
中时,它会工作

在QtCreator的项目“运行”配置中,工作目录设置为
project/work


但是为什么没有添加库路径?

当我写这个问题时,我在默认运行配置(没有
/usr/bin/primusrun
)中偶然发现了这个复选框

☑ 将生成库搜索路径添加到LD_library_路径

勾选此项后,运行正常。 然而,我意识到在自定义运行配置窗口中,没有这样的复选框,并且通过
LIBS+=
设置的库路径从未添加到
LD\u库路径中

通过手动将其添加到环境变量,它运行良好


但是,我想知道,是否没有办法自动实现这一点,这样.pro文件中的定义就足够了?

默认情况下,添加到
LIBS
的路径将添加到运行环境变量中的
LD\u LIBRARY\u PATH

然而,有时这些变化不会立即发生

要解决这个问题:

  • 关闭qtcreator
  • 删除
    .pro.user
    文件
  • 再次打开qtcreator并打开您的项目
或者,如果您现在不想重新启动qtcreator,您也可以手动将路径添加到
LD\u LIBRARY\u PATH