前言
本文会通过介绍在linux平台下的GStreamer的源码编译和单步调试example实例。官网介绍直接通过命令行来安装gstreamer可以参考链接:Installing on Linux。 这种方法安装后,基于gstreamer的程序,单步调试的时候并不会进入到gstreamer源码,无法进行源码级别的学习。
环境搭建
按照官网的提示,如果是在windows/linux/MACOS下面,会使用meson工具来编译整个gstreamer代码(Building from source using Meson),其他的平台下需要使用Cerbero来编译(Building from source using Cerbero)。所以我们使用meson这个工具在linux上编译。
-
meson版本
在最新的gstreamer源码里,需要meson版本高于1.1,安装后记得把meson的路径添加到path前面
sudo apt install python3-pip
pip3 install meson==1.3.2
-
源码下载
git clone https://gitlab.freedesktop.org/gstreamer/gstreamer.git
-
系统环境和开发环境
系统环境是通过apt命令来安装到linux系统里面的gstreamer,具体可以按照官网的Installing on Linux 来搭建。
开发环境是我们本文需要说的方式,这样的环境对gstreamer开发者来说比较适合。
编译
cd gstreamer
# --prefix 指定后面install的路径
# --buildtype 指定为debug,这样方便单步调试和跟踪代码
meson setup --prefix=/home/xxx/source/gstreamer --buildtype debug gstreambuild
# 编译源码
meson compile -C gstreambuild
# 安装到前面指定prefix目录下
meson install -C gstreambuild
建立开发环境
# 建立开发环境,--builddir指定前面meson编译的目录
./gst-env.py --builddir gstreambuild
# 进入虚拟开发环境
ninja -C gstreambuild devenv
# meson 环境配置
meson devenv
# 单步调试
gdb subprojects/gstreamer/tests/examples/helloworld/helloworld
这个时候就可以在这个terminal下gdb单步调试程序了
VSCode单步调试
因为刚才建立的开发环境是基于meson的,如果退出当前的terminal,就无效了。所以使用VSCode来调试的时候,需要基于刚才已经建立的meson开发环境。
- 安装插件
- 配置meson
setting->Meson build configuration,修改如下配置
- 添加vscode的launch.json文件
我这里好像工具自动识别生成了这个文件,大家可以参考
https://download.csdn.net/download/musiclvme/89900227?spm=1001.2101.3001.9500