记录改造ffmpeg遇到的依赖库问题

背景

其他团队二次开发的ffmpeg, 我们要在这个ffmpeg上做一些post action. 比如截图后上传s3,写kafka等等.代码移植后发现崩在kafka库里, 具体位置是在调用crc32.如下:

 

 排查过程

1、崩在库函数中, 怀疑是环境问题? 后来写一个小demo, 发现单独调用kafka功能正常.排除环境问题.

2、gdb 中info files,发现crc32函数地址, 不在libz中, 正常预期的是crc32是在libz库中包含的. 另外gdb中b crc32 发现有两个breakpoint. 分别是libz中的crc32 和第三方团队lib的crc32, 此时已经发现是调用到了第三方团队的crc32. 分析现在的编译和调用模型:

 

 发现编译的时候, librdkafka.a使用的是libz.so的crc32, 但是编译成ffmpeg二进制之后, librdkafka.a 直接调用的就是已经包含在ffmpeg中的pre_build.a中的crc32. 发生不符合预期的结果.

解决方

同步第三方团队发现的问题, 建议第三方团队不要把不必要的函数暴露出来.

 

相关文章

# 前言 现有主流消息中间件都是生产者-消费者模型,主要角色...
错误的根源是:kafka版本过高所致,2.2+=的版本,已经不需要...
DWS层主要是存放大宽表数据,此业务中主要是针对Kafka topic...
不多BB讲原理,只教你怎么用,看了全网没有比我更详细的了,...
终于写完了,其实最开始学kafka的时候是今年2月份,那时候还...
使用GPKafka实现Kafka数据导入Greenplum数据库踩坑问题记录(...