Ubuntu16.04编译QtMultimedia报错:Library 'gstreamer'未定义
解决Qt 5.12.1 QtMultimedia编译报错
Project ERROR: Library 'gstreamer' is not defined 我之前在Ubuntu 16.04虚拟机上编译Qt 5.12系列的QtMultimedia模块时,也碰到过和你一模一样的问题——明明已经装了一堆GStreamer组件,qmake检测也显示找到GStreamer 1.0,但就是报这个库未定义的错误。给你几个亲测有效的解决步骤:
1. 先确认pkg-config能正确识别GStreamer 1.0
Qt的qmake是通过pkg-config来查找GStreamer库的,所以先排查这个环节:
- 打开终端运行:
pkg-config --exists gstreamer-1.0 && echo "Found gstreamer-1.0" - 如果没有输出"Found gstreamer-1.0",说明pkg-config找不到GStreamer的配置文件。因为你是i386系统,配置文件应该在
/usr/lib/i386-linux-gnu/pkgconfig,可以临时设置环境变量再试:
再重新运行上面的检测命令,确认能找到后再执行qmake。export PKG_CONFIG_PATH=/usr/lib/i386-linux-gnu/pkgconfig:$PKG_CONFIG_PATH
2. 调整qmake命令的参数
之前的命令里GST_VERSION=1.0可能没有被正确识别,试试这些修改:
- 方式一:直接指定启用GStreamer 1.0的配置项:
/usr/local/Qt-5.12.1/bin/qmake -r CONFIG+=use_gstreamer_1_0 ../qt-everywhere-src-5.12.1/qtmultimedia/qtmultimedia.pro - 方式二:把pkg-config路径直接加到qmake命令前,确保它能找到配置:
PKG_CONFIG_PATH=/usr/lib/i386-linux-gnu/pkgconfig /usr/local/Qt-5.12.1/bin/qmake -r GST_VERSION=1.0 ../qt-everywhere-src-5.12.1/qtmultimedia/qtmultimedia.pro
3. 补全编译依赖的基础库
虽然你装了很多GStreamer的包,但Ubuntu 16.04上编译QtMultimedia还需要一些基础系统库,确保这些已经安装:
sudo apt-get install libasound2-dev libx11-dev libxv-dev libxi-dev
这些库是QtMultimedia处理音频视频输出必须的,缺了也可能导致间接的库检测错误。
4. 清理构建目录重新配置
有时候构建目录里的缓存文件会残留旧配置,导致冲突:
- 删除你当前的
~/sources/qt/build目录(或者至少删除里面的qtmultimedia子目录) - 重新创建build目录,cd进去,再重新运行调整后的qmake命令
5. 检查QtMultimedia的配置文件(可选)
如果上面的方法都不行,可以去Qt源码的qt-everywhere-src-5.12.1/qtmultimedia目录,打开qtmultimedia.pro或者gstreamer/gstreamer.pro,确认里面有类似下面的配置:
CONFIG += link_pkgconfig PKGCONFIG += gstreamer-1.0 gstreamer-base-1.0 gstreamer-video-1.0 gstreamer-audio-1.0
如果没有这些配置,手动加上后再重新运行qmake。
按照这些步骤来,应该能解决这个错误。
内容的提问来源于stack exchange,提问作者Piotr S
相关产品推荐
相关产品推荐

