为什么 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= 的文件夹]里面。
我正在尝试创建应用程序以使用 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= 的文件夹]里面。