首页 > 解决方案 > 使用 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.

我不明白错误信息。

我注意到的一些事情:

我的主要问题是:

编辑:

我已阅读建议的问题和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 脚本和可执行文件所在的文件夹中复制了出来。

不幸的是,所有这些步骤都没有解决我的问题......因此我要么做错了什么,要么这不是问题所在。

标签: c++qtqt-creatorqmake

解决方案


推荐阅读