如果使用Qmake编译的应用程序是从控制台编译的,则不会运行,但是如果是通过QtCreator编译的,则运行

时间:2019-02-18 10:04:00

标签: c++ qt qt-creator qmake

我已经使用QT(5.11.2)和QtCreator开发了一个应用程序。

当我直接从QtCreator编译并运行应用程序时,无论是调试还是发布版本,一切都可以正常工作。

如果使用QtCreator的“ build”按钮进行构建,我也可以从控制台启动该应用程序。

但是,如果我尝试从控制台构建它,则会崩溃...我试图在调试模式下对其进行编译,以查看它是否引发任何异常,但是我在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 "$@"

,其命名与我的应用程序完全一样,扩展名为.shmyProject.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脚本和可执行文件所在的文件夹中。

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

0 个答案:

没有答案