使用Qt Creator独立编译C ++应用程序

时间:2018-08-29 12:45:44

标签: c++ compilation libraries qmake static-linking

我是社区的新手,我想问一个问题。 我已经用QT用c ++编写了一个应用程序,可以在我的linux发行版中进行编译和使用。 但是,由于库不同,因此无法在另一台正常的计算机上使用二进制文件。 在我的应用程序上使用ldd命令,我看到共享库如下:

    linux-vdso.so.1 (0x00007ffee0fee000)
    libgvc.so.6 => /usr/lib/libgvc.so.6 (0x00007f2124aea000)
    libcgraph.so.6 => /usr/lib/libcgraph.so.6 (0x00007f21248d4000)
    libcdt.so.5 => /usr/lib/libcdt.so.5 (0x00007f21246cd000)
    libQt5PrintSupport.so.5 => /opt/Qt5.9.1/5.9.1/gcc_64/lib/libQt5PrintSupport.so.5 (0x00007f212445f000)
    libQt5Widgets.so.5 => /opt/Qt5.9.1/5.9.1/gcc_64/lib/libQt5Widgets.so.5 (0x00007f2123c2e000)
    libQt5Gui.so.5 => /opt/Qt5.9.1/5.9.1/gcc_64/lib/libQt5Gui.so.5 (0x00007f2123480000)
    libQt5Core.so.5 => /opt/Qt5.9.1/5.9.1/gcc_64/lib/libQt5Core.so.5 (0x00007f2122d46000)
    libGL.so.1 => /usr/lib/x86_64-linux-gnu/libGL.so.1 (0x00007f2122ad4000)
    libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007f21228b7000)
    libstdc++.so.6 => /usr/lib/x86_64-linux-gnu/libstdc++.so.6 (0x00007f2122535000)
    libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007f2122231000)
    libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007f212201a000)
    libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f2121c7b000)
    libltdl.so.7 => /usr/lib/x86_64-linux-gnu/libltdl.so.7 (0x00007f2121a71000)
    libxdot.so.4 => /usr/lib/libxdot.so.4 (0x00007f212186b000)
    libpathplan.so.4 => /usr/lib/libpathplan.so.4 (0x00007f2121663000)
    libexpat.so.1 => /lib/x86_64-linux-gnu/libexpat.so.1 (0x00007f2121439000)
    libz.so.1 => /lib/x86_64-linux-gnu/libz.so.1 (0x00007f212121f000)
    libicui18n.so.56 => /opt/Qt5.9.1/5.9.1/gcc_64/lib/libicui18n.so.56 (0x00007f2120d86000)
    libicuuc.so.56 => /opt/Qt5.9.1/5.9.1/gcc_64/lib/libicuuc.so.56 (0x00007f21209ce000)
    libicudata.so.56 => /opt/Qt5.9.1/5.9.1/gcc_64/lib/libicudata.so.56 (0x00007f211efeb000)
    libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007f211ede7000)
    libgthread-2.0.so.0 => /usr/lib/x86_64-linux-gnu/libgthread-2.0.so.0 (0x00007f211ebe5000)
    libglib-2.0.so.0 => /lib/x86_64-linux-gnu/libglib-2.0.so.0 (0x00007f211e8d1000)
    /lib64/ld-linux-x86-64.so.2 (0x00007f2125102000)
    libxcb-dri3.so.0 => /usr/lib/x86_64-linux-gnu/libxcb-dri3.so.0 (0x00007f211e6ce000)
    libxcb-present.so.0 => /usr/lib/x86_64-linux-gnu/libxcb-present.so.0 (0x00007f211e4cb000)
    libxcb-sync.so.1 => /usr/lib/x86_64-linux-gnu/libxcb-sync.so.1 (0x00007f211e2c4000)
    libxshmfence.so.1 => /usr/lib/x86_64-linux-gnu/libxshmfence.so.1 (0x00007f211e0c2000)
    libglapi.so.0 => /usr/lib/x86_64-linux-gnu/libglapi.so.0 (0x00007f211de93000)
    libXext.so.6 => /usr/lib/x86_64-linux-gnu/libXext.so.6 (0x00007f211dc81000)
    libXdamage.so.1 => /usr/lib/x86_64-linux-gnu/libXdamage.so.1 (0x00007f211da7e000)
    libXfixes.so.3 => /usr/lib/x86_64-linux-gnu/libXfixes.so.3 (0x00007f211d878000)
    libX11-xcb.so.1 => /usr/lib/x86_64-linux-gnu/libX11-xcb.so.1 (0x00007f211d676000)
    libX11.so.6 => /usr/lib/x86_64-linux-gnu/libX11.so.6 (0x00007f211d336000)
    libxcb.so.1 => /usr/lib/x86_64-linux-gnu/libxcb.so.1 (0x00007f211d10e000)
    libxcb-glx.so.0 => /usr/lib/x86_64-linux-gnu/libxcb-glx.so.0 (0x00007f211cef3000)
    libxcb-dri2.so.0 => /usr/lib/x86_64-linux-gnu/libxcb-dri2.so.0 (0x00007f211ccee000)
    libXxf86vm.so.1 => /usr/lib/x86_64-linux-gnu/libXxf86vm.so.1 (0x00007f211cae8000)
    libdrm.so.2 => /usr/lib/x86_64-linux-gnu/libdrm.so.2 (0x00007f211c8d8000)
    libpcre.so.3 => /lib/x86_64-linux-gnu/libpcre.so.3 (0x00007f211c665000)
    libXau.so.6 => /usr/lib/x86_64-linux-gnu/libXau.so.6 (0x00007f211c461000)
    libXdmcp.so.6 => /usr/lib/x86_64-linux-gnu/libXdmcp.so.6 (0x00007f211c25b000)
    libbsd.so.0 => /lib/x86_64-linux-gnu/libbsd.so.0 (0x00007f211c045000)
    librt.so.1 => /lib/x86_64-linux-gnu/librt.so.1 (0x00007f211be3d000)

我希望将这些库包含在我的应用程序中,以便能够在另一台计算机上使用它。

我不知道我是否必须以静态或共享方式使用它,我不在乎,我只是希望它能起作用:)。

我尝试通过以下方式将它们添加到QTcreator的.pro文件中(带有libgvc的示例):

unix:!macx: LIBS += -L$$PWD/../../../../usr/lib/ -lgvc
INCLUDEPATH += $$PWD/../../../../usr/lib
DEPENDPATH += $$PWD/../../../../usr/lib

编译顺利。但是,它仍然无法在另一台计算机上运行,​​就像二进制文件中未包含库一样。

我还尝试添加以下命令:

QMAKE_LFLAGS += -static
LIBS +=-Wl,-Bstatic

但是在这种情况下,我在编译过程中收到一条错误消息

Cannot find -lgvc

您是否知道如何使用Qt Creator在Linux上独立编译程序?

0 个答案:

没有答案