调试ffmpeg与Makefile中的STRIP

本文介绍了一种调试FFmpeg的方法:通过使用专为调试准备的ffmpeg_g执行文件或修改Makefile来禁用STRIP命令行,从而保留调试符号,便于进行程序调试。

 

最近在调试ffmpeg的时候发现没有符号表,google了一下发现ffmpeg给出了一个ffmpeg_g的执行文件专用来调试。也可以修改Makefile文件,把这一行注释掉:

 

#       $(STRIP) $@

 

这样就可以直接调试ffmpeg了。STRIP的含义是当最终的可执行程序不需要包含调试信息时,可使用“strip”去掉可执行程序中的调试符号以减小最终的程序大小。(ref)

 

看来我这个菜鸟对于Makefile的知识还需要补充。

### Linux 下 FFmpeg 依赖库的交叉编译 在 Linux 环境下进行 FFmpeg 的交叉编译涉及多个步骤,主要包括配置目标平台、安装必要的依赖项以及调整构建脚本。以下是关于如何实现这一过程的具体说明。 #### 配置目标平台 为了使 FFmpeg 能够为目标操作系统(如 Windows)生成可执行文件,在配置阶段需要启用 `--enable-cross-compile` 参数[^4]。此参数告知 FFmpeg 构建系统正在处理跨平台编译任务。此外,还需要指定以下选项: - **`--arch`**: 定义目标架构,例如 x86_64 或 arm。 - **`--target-os`**: 设置目标操作系统的名称,比如 mingw32 表示 Windows。 - **`--cross-prefix`**: 提供用于调用目标工具链命令的前缀字符串,通常以 `-` 结束。例如,如果您的 GCC 工具链名为 `i686-w64-mingw32-gcc`,那么该值应设为 `i686-w64-mingw32-`。 这些设置可以通过运行 configure 命令完成,类似于下面的形式: ```bash ./configure --prefix="$HOME/ffmpeg_build" \ --disable-shared \ --enable-cross-compile \ --arch=x86_64 \ --target-os=mingw32 \ --cross-prefix=i686-w64-mingw32- ``` #### 处理共享对象错误 当遇到链接器报错提示无法创建共享对象时,可能是因为某些静态库未使用位置无关代码(PIC)编译所致。这种情况下需修改源码中的 Makefile 文件来加入 `-fPIC` 编译标志[^1]。具体做法是在路径 ~/ffmpeg_sources/ffmpegffbuild/config.mak 中找到并编辑第 101 行,确保其包含 `-fPIC` 标志,像这样: ```makefile HOSTCFLAGS= -std=c99 -Wall -O3 -fPIC ``` #### 开发者模式下的额外功能支持 对于那些希望深入研究或改进 FFmpeg 自身逻辑的人士来说,可以利用开发者专用选项[^3]。虽然这部分内容不直接影响基本的功能实现,但它提供了调试信息和其他辅助特性,有助于更高效地定位问题所在。 通过上述指导原则,您可以成功搭建起适合自己的 FFmpeg 及其相关组件的交叉编译环境。 ```bash #!/bin/bash # Example script to setup cross-compilation environment variables. export CC="i686-w64-mingw32-gcc" export CXX="i686-w64-mingw32-g++" export AR="i686-w64-mingw32-ar" export STRIP="i686-w64-mingw32-strip" cd ~/ffmpeg_sources && ./configure --prefix="$HOME/ffmpeg_build" \ --disable-shared \ --enable-cross-compile \ --arch=x86_64 \ --target-os=mingw32 \ --cross-prefix=i686-w64-mingw32- make clean && make -j$(nproc) ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值