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

Why can't qt/qmake find my shared library

我正在尝试创建应用程序以使用 raspberry pi 进行交叉编译 3. 最初我只有一个名为 "application" 的项目并且一切正常。了解项目的范围后,我认为抽象出我必须添加的 类 是个好主意。所以我把这个项目变成了一个子目录项目。那就是问题的开始。

目录如下所示

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

我关注了 this guide 和其他几十个寻求指导的人并找到了 none。

我得到的错误是:

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

构建后libs文件夹的图片

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

IntegratedSmartHome.pro:

TEMPLATE = subdirs

SUBDIRS += \
    libs \
    application

application.depends = libs

CONFIG += ordered

Application.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

Libs.pro

TEMPLATE = subdirs

SUBDIRS += \
    common

CONFIG += ordered

Common.pro

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

Libs.pri

INCLUDEPATH += . ..
WARNINGS += -Wall

TEMPLATE = lib

UI_DIR = uics
MOC_DIR = mocs
OBJECTS_DIR = objs

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

会更明确一点

根据您发布的日志输出判断,这不是构建失败。这是 运行 一次失败,因为加载程序找不到共享库。它找不到共享库,因为它不在默认 LD_LIBRARY_PATH 上(或通过 /etc/ld.so.conf 配置)。

对于 运行 您的应用程序,您可能需要编辑 IDE 中的 运行 配置以将 LD_LIBRARY_PATH 设置为指向包含您的 [=13= 的文件夹]里面。