将库包括到我的项目文件夹中 我用C++和Qt Creator编程。我需要在我的项目文件夹中包含我正在使用的库,以便该程序可以在任何设备上实现。我该怎么办
我知道我应该修改将库包括到我的项目文件夹中 我用C++和Qt Creator编程。我需要在我的项目文件夹中包含我正在使用的库,以便该程序可以在任何设备上实现。我该怎么办,c++,qt-creator,libraries,C++,Qt Creator,Libraries,我知道我应该修改.pro文件,我已经试过了: LIBS+=-L"$$_PRO_FILE_PWD_/libs" \ -lvl \ 但它不起作用。我得到这个错误: 加载共享库时出错:libvl.so:无法打开共享对象文件:没有这样的文件或目录 有什么想法吗?? 谢谢首先,在Linux上,qmake生成用于控制构建过程的makefile。当您添加行时 LIBS+=-L"$$_PRO_FILE_PWD_/libs" -lvl 对于.pro文件,qmake将确保生成适当的Makefile目标,该目标告
.pro
文件,我已经试过了:
LIBS+=-L"$$_PRO_FILE_PWD_/libs" \
-lvl \
但它不起作用。我得到这个错误:
加载共享库时出错:libvl.so:无法打开共享对象文件:没有这样的文件或目录
有什么想法吗??
谢谢首先,在Linux上,qmake生成用于控制构建过程的makefile。当您添加行时
LIBS+=-L"$$_PRO_FILE_PWD_/libs" -lvl
对于.pro
文件,qmake将确保生成适当的Makefile目标,该目标告诉链接器在$$\u pro\u file\u PWD\u/libs
中搜索其他库,并在链接可执行文件时链接到库libvl.so
但是,您遇到的是运行时问题。更具体地说,ld linux.so.2
将尝试在运行时查找并动态加载共享库,如libvl.so
。加载可执行文件时,使用内置路径(如/usr/lib
和用户定义(和/或分发定义)路径实现此操作。请参阅对应的forld linux.so.2
和forldconfig
,它们用于以标准方式配置用户定义的库搜索路径
当ld linux.so.2
尝试查找库时,它会按以下顺序搜索一组定义良好的目录(以冒号分隔):
- 如果存在所谓的
,可以将其写入可执行库(已弃用)DT_RPATH
(至少对于大多数可执行文件,请参阅手册页了解例外情况)LD_LIBRARY_路径
,它取代了DT_运行路径
(如果有的话),但将查找延迟到处理完DT_RPATH
之后。LD_库路径
和RPATH
可以用来模拟Windows上的行为,在Windows上也会搜索可执行文件的路径<然而,code>LD_LIBRARy_PATH更适合于此目的RUNPATH
- 缓存文件
中存在的库名,该文件是由/etc/ld.so.cache
使用ldconfig
中指定的目录生成的,也可能是通过包含在/etc/ld.so.conf/
中直接引用或以其他方式指定的其他文件ld.so.conf
- 受信任的目录,
和/lib
/usr/lib
ld linux.so.2
无法加载该对象
您的解决方案很简单,有多种:
- 在执行程序之前,请使用
设置export LD\u LIBRARY\u PATH={yourSearchPaths}
环境变量LD\u LIBRARY\u PATH
- 将
添加到命令行上可执行文件的调用中,例如LD_LIBRARY_PATH
LD_LIBRARY_PATH={yourSearchPaths}./{executable}
- 提供一个可执行的启动shell脚本,例如
,它为您执行上述操作,然后只需执行shell脚本start.sh
/start.sh
lvl
是一个库,您需要添加一个-l
前缀,才能将其实际添加到要链接的库列表中。它会出现以下错误:加载共享库时出错:libvl.so:无法打开共享对象文件:没有此类文件或directory@thokra是的,我已经在我的程序中使用了-lvl,但是当我将复制粘贴到论坛中时,它已经不存在了:DI更正question@triple13:嗯,显然liblv不在$\u PRO\u FILE\u PWD\u/libs
上。发布一条消息并打印路径,然后检查该字段是否存在于您希望它存在的位置。没有评论就投票的人是怎么回事?@thokra..非常感谢您的详细解释..我将.pro文件中的行更改为:'LIBS+=-L“$$PWD/LIBS”-lvl'但它不起作用..我在另一台设备上尝试了整个项目..令人惊讶的是..它工作得非常完美..尽管两台设备中的一切都是一样的..也许只是QT Creator版本不同..无论如何,非常感谢:)@triple13:你对设备的意思是什么?此外,QtCreator只需解析.pro
文件,就可以相应地在IDE中执行操作。QtCreator在构建时或运行时不参与(除了启动可执行文件并可能指定工作目录之外)。@thokra..所说的设备是指另一台机器..另一台计算机..我尝试了同一个项目,它成功了