基于docker加clion配置远程调试ffmpeg,便于多种环境开发
初衷
为了友好地调试ffmpeg,学习其中代码精华,梳理脉络,界面式的断点调试肯定是比较好的方法。
解决思路
(1)基于clion是跨平台的ide,可以让我们在window、mac、linux平台都可以统一使用,跳过各个平台的差异性。
(2)ffmpeg在各个平台也是有差异性的,为了避免这种差异性,采取docker容器的方式去隔离解决。
1、构建docker容器
# 切换到工程目录
cd 工程目录
# 开始构建,并后台运行容器
docker-compose up -d
# 如果要停止容器,则可以
docker-compose down
2、配置clion环境
-
设置setting -> Build,Execution,Deployment->Toolchains
配置ssh,账号:debugger 密码:pwd 端口:7776
设置setting -> Build,Execution,Deployment->CMake
创建一个CMake类型,名称为RemoteHost,类型为Debug,toolchain选择为RemoteHost
- 设置setting -> Build,Execution,Deployment->Deployment
- 同步下载
将远程的代码下载到本地,即可以修改,并且修改后同步到远程
Tools->Deployment->Download from 选择远程目录
Tools->Deployment->Automatic upload(always) -
编译,点击ffmpeg|RemoteHostDebug即可
生成的目标文件和应用都在远端,运行调试都会在远端,本地仅作为编辑。
依赖
- libx264
- fdk_aac
configure参数
./configure --extra-libs=-lpthread --extra-libs=-lm --enable-gpl --enable-libfdk_aac --enable-libx264 --enable-nonfree --disable-asm
以下文件由configure和make产生
- config.h
- libavcode/bsf_list.c
- libavcode/codec_list.c
- libavcode/parser_list.c
- libavdevice/indev_list.c
- libavdevice/outdev_list.c
- libavfilter/filter_list.c
- libavformat/demuxer_list.c
- libavformat/muxer_list.c
- libavformat/protocol_list.c
- libavutil/config.h