QMake 命令行中缺少 DSO

问题描述 投票:0回答:1

我正在尝试在 Raspberry Pi 上使用 libcamera 构建我的 Qt 应用程序,但 qt 项目不会构建,而是显示错误:命令行中缺少 DSO。 我已经从源代码构建了 libcamera(它是一个 .so 库),并将其包含在我的 .pro 文件中:

INCLUDEPATH += $$PWD/../libcamera/include
LIBS += -L$$PWD/../libcamera/build/src/libcamera -lcamera

我也试过这个,结果一样:

INCLUDEPATH += /usr/local/include/libcamera
LIBS += -lcamera

准确的错误:

error: /usr/local/lib/aarch64-linux-gnu/libcamera-base.so.0.0.4: error adding symbols: DSO missing from command line

我很确定我把它包含错了,但我不知道如何以最终工作的方式包含它。我如何正确地包括这个?

编辑:LibCamera 已正确安装,因为来自herethis example 运行正常。其他 Qt 应用程序也可以运行,但这个不会。

至于包含 - $PWD 实际上是 /home/pi/app 并且在 /home/pi/libcamera 中我从源代码构建了 libcamera。

但是/usr/local/include/libcamera确实包含头文件,而/usr/local/lib/aarch64-linux-gnu确实包含libcamera-base.so。

具有完整输出的构建命令:

g++ -Wl,-rpath,/opt/Qt/6.2.4-armv8/lib -Wl,-rpath-link,/opt/Qt/6.2.4-armv8/lib
 -o app LibCamera.o main.o mainwindow.o qrc_resource.o moc_mainwindow.o   `pkg-config --cflags --libs opencv4` -lpigpiod_if2
 -lrt -ldl -lpython3.9 -lcamera /opt/Qt/6.2.4-armv8/lib/libQt6Charts.so -pthread
 /opt/Qt/6.2.4-armv8/lib/libQt6OpenGLWidgets.so /opt/Qt/6.2.4-armv8/lib/libQt6Widgets.so /opt/Qt/6.2.4-armv8/lib/libQt6OpenGL.so 
/opt/Qt/6.2.4-armv8/lib/libQt6Gui.so -lEGL /opt/Qt/6.2.4-armv8/lib/libQt6Core.so -lpthread -lGLESv2   

/usr/bin/ld: LibCamera.o: undefined reference to symbol '_ZN9libcamera8UniqueFD5resetEi'
/usr/bin/ld: /usr/local/lib/aarch64-linux-gnu/libcamera-base.so.0.0.4: error adding symbols: DSO missing from command line
collect2: error: ld returned 1 exit status
make: *** [Makefile:285: app] Error 1

我的 .pro 文件的一部分(跳过源、标题和资源):

QT       += core gui charts
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
CONFIG += c++14
QT_CONFIG -= no-pkg-config
INCLUDEPATH += /usr/include/opencv4
LIBS += `pkg-config --cflags --libs opencv4`
LIBS+= -lpigpiod_if2 -lrt -ldl
CONFIG += no_keywords
INCLUDEPATH += /usr/include/python3.9
LIBS += -lpython3.9
INCLUDEPATH += /usr/local/include/libcamera/libcamera
LIBS += -lcamera

qt build qmake
1个回答
0
投票

获取编译器和链接器参数的正确方法似乎是

pkg-config
.

参考Linking libraries to a QT project using pkg-config output you should use

的答案
QT_CONFIG -= no-pkg-config
CONFIG += link_pkgconfig
PKGCONFIG += libcamera

并删除

INCLUDEPATH
LIBS
的手动规范。

根据不同的答案,第一行

QT_CONFIG ...
可能需要也可能不需要。

我没有测试建议的解决方案。

© www.soinside.com 2019 - 2024. All rights reserved.