为什么Qt / qmake找不到我的共享库

时间:2019-01-15 16:56:49

标签: c++ qt qmake

我试图创建和与raspberry pi 3进行交叉编译的应用程序。最初,我只是有一个名为“ application”的项目,并且一切正常。了解项目范围后,我认为将要添加的类抽象出来将是一个好主意。所以我把项目变成了一个子目录项目。那是问题的开始。

目录看起来像这样

range

我跟随this guide和其他几十个人寻求指导,但没有找到。

我得到的错误是:

IntegratedSmartHome.pro       subdirs
-->Application.pro            app
-->Libs.pro                   subdirs
---->common.pro               library

构建后的libs文件夹图片

任何有关如何解决此问题的指导将不胜感激!我将在下面包括我的4个.pro文件。 注意:我没有任何构建错误

IntegratedSmartHome.pro:

10:37:03: Starting /home/jesse/Projects/build-integratedSmartHome-Desktop_Qt_5_11_1_GCC_64bit-Debug/application/application...
/home/jesse/Projects/build-integratedSmartHome-Desktop_Qt_5_11_1_GCC_64bit-Debug/application/application: error while loading shared libraries: libcommon.so.1: cannot open shared object file: No such file or directory
10:37:03: /home/jesse/Projects/build-integratedSmartHome-Desktop_Qt_5_11_1_GCC_64bit-Debug/application/application exited with code 127

Application.pro

TEMPLATE = subdirs

SUBDIRS += \
    libs \
    application

application.depends = libs

CONFIG += ordered

Libs.pro

QT += gui quick
CONFIG += c++11

DEFINES += QT_DEPRECATED_WARNINGS

SOURCES += \
    main.cpp \
    smartdevicesmodel.cpp \
    globalproperties.cpp

HEADERS += \
    smartdevicesmodel.h \
    globalproperties.h

RESOURCES += \
        res/res.qrc

INCLUDEPATH += ../libs/common

LIBS += \
    -L../libs/common -lcommon

# Default rules for deployment.
qnx: target.path = /tmp/$${TARGET}/bin
else: unix:!android: target.path = /opt/$${TARGET}/bin
!isEmpty(target.path): INSTALLS += target

Common.pro

TEMPLATE = subdirs

SUBDIRS += \
    common

CONFIG += ordered

Libs.pri

QT -= gui

CONFIG += c++11
CONFIG -= app_bundle

DEFINES += QT_DEPRECATED_WARNINGS

SOURCES += \
    main.cpp \
    devicetype.cpp \
    smartdevice.cpp

HEADERS += \
    devicetype.h \
    smartdevice.h

! include( ../libs.pri ) {
    error( "Couldn't find the libs.pri file!" )
}

# Default rules for deployment.
#qnx: target.path = /tmp/$${TARGET}/bin
#else: unix:!android: target.path = /opt/$${TARGET}/bin
#!isEmpty(target.path): INSTALLS += target

编辑: 我有一些编写构建Shell脚本的经验,如果您认为这值得我花时间,或者继续使用其中之一支持raspi并不是太困难,我可以尝试一下,然后我会有点链接更明确

1 个答案:

答案 0 :(得分:1)

从您发布的日志输出来看,这不是构建失败。这是运行时失败,因为加载器找不到共享库。它找不到共享库,因为它不在默认的LD_LIBRARY_PATH上(或通过/etc/ld.so.conf配置的)。

要运行您的应用程序,您可能需要在IDE中编辑运行配置,以将LD_LIBRARY_PATH指向其中包含libcommon.so的文件夹。