树莓派Qt项目构建报错:DSO missing from command line(QMake+libcamera)
解决树莓派Qt+libcamera编译DSO缺失问题
问题根源
DSO missing from command line 错误本质是链接阶段未明确指定依赖的动态库,libcamera主库依赖libcamera-base,仅链接主库会触发该错误。
解决方案
方案1:使用pkg-config(推荐,自动处理依赖链)
libcamera源码编译后会生成.pc配置文件,Qt通过pkg-config可自动获取所有编译/链接参数,无需手动梳理依赖:
在Qt项目的.pro文件中添加:
CONFIG += link_pkgconfig PKGCONFIG += libcamera libcamera-base
- 若libcamera安装在自定义路径(如
/opt/libcamera),需先将其lib/pkgconfig目录加入环境变量:
或直接在export PKG_CONFIG_PATH=/opt/libcamera/lib/pkgconfig:$PKG_CONFIG_PATH.pro中指定:PKG_CONFIG_PATH += /opt/libcamera/lib/pkgconfig CONFIG += link_pkgconfig PKGCONFIG += libcamera libcamera-base
方案2:手动指定库路径与依赖
若不想使用pkg-config,需明确指定头文件路径、库路径及所有依赖库:
# 替换为你的libcamera头文件实际路径 INCLUDEPATH += /usr/local/include/libcamera # 替换为你的libcamera库文件实际路径 LIBS += -L/usr/local/lib -lcamera -lcamera-base
- 注意:必须同时链接
-lcamera和-lcamera-base,仅添加前者会导致DSO缺失错误。
额外验证步骤
- 检查库文件符号链接:
进入libcamera库目录(如/usr/local/lib),确认存在libcamera-base.so软链接指向libcamera-base.so.0.0.4,若缺失则手动创建:sudo ln -s libcamera-base.so.0.0.4 libcamera-base.so - 更新系统库缓存:
sudo ldconfig - 重新编译项目:
qmake && make clean && make
内容的提问来源于stack exchange,提问作者robotanical
相关产品推荐
相关产品推荐

