c++ - 使用 qmake 编译的应用程序如果从控制台编译则不会运行,但如果从 QtCreator 编译则运行
问题描述
我使用 QT (5.11.2) 和 QtCreator 开发了一个应用程序。
当我直接从 QtCreator 编译和运行应用程序时,在调试和发布版本中一切正常。
如果它是使用 QtCreator 的“构建”按钮构建的,我也可以从控制台启动应用程序。
但是,如果我尝试从控制台构建它,它确实会崩溃......我尝试在调试模式下编译它以查看它是否引发任何异常,但我在 Linux shell 中调试的经验很少。
以下命令用于构建应用程序:
qmake CONFIG+=debug myProject.pro
make
gdb myProject
(gdb) run
那就是输出:
Starting program: /home/.../myProject
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".
[New Thread 0x7fffedc48700 (LWP 30355)]
[New Thread 0x7fffe2c70700 (LWP 30356)]
[New Thread 0x7fffe246f700 (LWP 30357)]
[New Thread 0x7fffe09d7700 (LWP 30359)]
libpng warning: iCCP: known incorrect sRGB profile
terminate called without an active exception
Thread 1 "myProject" received signal SIGABRT, Aborted.
__GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:51
51 ../sysdeps/unix/sysv/linux/raise.c: No such file or directory.
我不明白错误信息。
我注意到的一些事情:
- 应用程序正在编译
- 应用程序开始运行。执行前几行
- 据我所知,我没有触及 QtCreator 中的任何构建设置
- 出现警告消息时应用程序没有崩溃
libpng warning: iCCP: known incorrect sRGB profile
......所以我想它与此无关。
我的主要问题是:
- 为什么从 QtCreator 编译时应用程序运行良好但通过终端编译时崩溃?
- 当从 QtCreator 编译 someting 时,是否有任何默认设置在 qmake 中的构建选项?
- 我该如何处理这个错误?我不知道下一步应该是什么,因为当我使用像 QtCreator 这样的 IDE 时一切正常。
编辑:
我已阅读建议的问题和Qt for Linux/X11 - Deployment
帮助页面。
我尝试使用如下所示的 bash 文件运行应用程序:
#!/bin/sh
appname=`basename $0 | sed s,\.sh$,,`
echo appname = $appname
dirname=`dirname $0`
tmp="${dirname#?}"
if [ "${dirname%$tmp}" != "/" ]; then
dirname=$PWD/$dirname
fi
echo dirname = $dirname
LD_LIBRARY_PATH=$dirname
echo LD_LIBRARY_PATH = $LD_LIBRARY_PATH
echo " "
export LD_LIBRARY_PATH
$dirname/$appname "$@"
它的命名与我的应用程序完全一样,带有.sh
扩展名 ( myProject.sh
)。
此外,我运行了ldd ./myProject
列出以下动态库的命令:
linux-vdso.so.1 (0x00007fff6edaf000)
libQt5Charts.so.5 => /home/***/Qt/5.11.2/gcc_64/lib/libQt5Charts.so.5 (0x00007ff61912f000)
libQt5Widgets.so.5 => /home/***/Qt/5.11.2/gcc_64/lib/libQt5Widgets.so.5 (0x00007ff6188eb000)
libQt5Gui.so.5 => /home/***/Qt/5.11.2/gcc_64/lib/libQt5Gui.so.5 (0x00007ff6180ee000)
libQt5Core.so.5 => /home/***/Qt/5.11.2/gcc_64/lib/libQt5Core.so.5 (0x00007ff617994000)
libstdc++.so.6 => /usr/lib/x86_64-linux-gnu/libstdc++.so.6 (0x00007ff61760b000)
libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007ff61726d000)
libgomp.so.1 => /usr/lib/x86_64-linux-gnu/libgomp.so.1 (0x00007ff61703e000)
libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007ff616e26000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007ff616a35000)
/lib64/ld-linux-x86-64.so.2 (0x00007ff619b70000)
libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007ff616816000)
libGL.so.1 => /usr/lib/x86_64-linux-gnu/libGL.so.1 (0x00007ff61658a000)
libz.so.1 => /lib/x86_64-linux-gnu/libz.so.1 (0x00007ff61636d000)
libicui18n.so.56 => /home/***/Qt/5.11.2/gcc_64/lib/libicui18n.so.56 (0x00007ff615ed4000)
libicuuc.so.56 => /home/***/Qt/5.11.2/gcc_64/lib/libicuuc.so.56 (0x00007ff615b1c000)
libicudata.so.56 => /home/***/Qt/5.11.2/gcc_64/lib/libicudata.so.56 (0x00007ff614139000)
libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007ff613f35000)
libgthread-2.0.so.0 => /usr/lib/x86_64-linux-gnu/libgthread-2.0.so.0 (0x00007ff613d33000)
libglib-2.0.so.0 => /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0 (0x00007ff613a1d000)
libGLX.so.0 => /usr/lib/x86_64-linux-gnu/libGLX.so.0 (0x00007ff6137ec000)
libGLdispatch.so.0 => /usr/lib/x86_64-linux-gnu/libGLdispatch.so.0 (0x00007ff613536000)
libpcre.so.3 => /lib/x86_64-linux-gnu/libpcre.so.3 (0x00007ff6132c4000)
libX11.so.6 => /usr/lib/x86_64-linux-gnu/libX11.so.6 (0x00007ff612f8c000)
libxcb.so.1 => /usr/lib/x86_64-linux-gnu/libxcb.so.1 (0x00007ff612d64000)
libXau.so.6 => /usr/lib/x86_64-linux-gnu/libXau.so.6 (0x00007ff612b60000)
libXdmcp.so.6 => /usr/lib/x86_64-linux-gnu/libXdmcp.so.6 (0x00007ff61295a000)
libbsd.so.0 => /lib/x86_64-linux-gnu/libbsd.so.0 (0x00007ff612745000)
librt.so.1 => /lib/x86_64-linux-gnu/librt.so.1 (0x00007ff61253d000)
我现在已经将所有七个列出的库从/home/***/Qt/5.11.2/?
我的 shell 脚本和可执行文件所在的文件夹中复制了出来。
不幸的是,所有这些步骤都没有解决我的问题......因此我要么做错了什么,要么这不是问题所在。
解决方案
推荐阅读
- python - Python 显示矩阵(嵌套元组)
- gekko - GEKKO优化器@error:不等式定义无效的不等式:z > x < y
- python-3.x - Pytorch、INPUT(正常张量)和 WEIGHT(cuda 张量)不匹配
- python - 绑定 C 函数 Python 时的问题
- python - Kivy - 使用实现的 ScrollView 在 GridLayout 中更改 FloatLayout 的行高
- javascript - 反应更新 setState 将字符串转换为数组
- php - PHP 返回一个对象的实例
- excel - VBA 设置页面设置
- javascript - 更改元素的内部文本是否会干扰其子元素?(音频元素的问题)
- javascript - 如何在 .mjs 脚本中使用 Node Sass 解析别名?