ffmpeg下编译tsan

如何在ffmpeg下编译tsan,如下配置:

bash 复制代码
./configure \
    --prefix=/workspace/ffmpeg_gcu \
    --disable-stripping \
    --disable-optimizations \
    --disable-x86asm \
    --toolchain=gcc-tsan \
    --enable-pic \
    --enable-swscale \
    --enable-static \
    --enable-shared 

结果出现下面错误,提示找不到libtsan_preinit.o:

bash 复制代码
BEGIN /tmp/ffconf.l64ruLdY/test.c
    1	int main(void){ return 0; }
END /tmp/ffconf.l64ruLdY/test.c
gcc -fsanitize=thread -fPIC -g0 -O3 -DNDEBUG -Wl,--build-id -c -o /tmp/ffconf.l64ruLdY/test.o /tmp/ffconf.l64ruLdY/test.c
gcc -fuse-ld=gold -ldl -lpthread -Wl,--build-id -fsanitize=thread -fPIC -o /tmp/ffconf.l64ruLdY/test /tmp/ffconf.l64ruLdY/test.o
/usr/bin/ld.gold: error: cannot open libtsan_preinit.o: No such file or directory
collect2: error: ld returned 1 exit status
C compiler test failed.

安装tsan,并且测试

bash 复制代码
# 安装
$ apt-get install libtsan0 libtsan-dev

# 测试
$ echo "int main(){return 0;}" | gcc -x c -fsanitize=thread - -o /dev/null
/usr/bin/ld: cannot find libtsan_preinit.o: No such file or directory
collect2: error: ld returned 1 exit status

寻找:

bash 复制代码
# 查找
$ find /usr -name "libtsan_preinit.o"
/usr/aarch64-linux-gnu/lib/libtsan_preinit.o

# 查看机器类型
$ gcc -dumpmachine
x86_64-linux-gnu

后来才知道libtsan0:aarch64-linux-gnu 是 aarch64 版本的 TSAN 库。

解决方案:

把上面的--toolchain=gcc-tsan \替换为--toolchain=clang-tsan \

相关推荐
hjjdebug几秒前
ffplay6 播放器关键技术点分析 1/2
c++·ffmpeg·音视频
泰勒朗斯3 小时前
ffmpeg 中config 文件一些理解
windows·microsoft·ffmpeg
xmode2 天前
centos7.9安装ffmpeg6.1和NASM、Yasm、x264、x265、fdk-aac、lame、opus解码器
ffmpeg·centos
王江奎3 天前
FFmpeg 升级指北
ffmpeg
雨夜和阳晨3 天前
FFmpeg录制屏幕及声音
ffmpeg
吴声子夜歌3 天前
FFmpeg——基础知识及FFmpeg框架
ffmpeg
aqi003 天前
FFmpeg开发笔记(七十二)Linux给FFmpeg集成MPEG-5视频编解码器EVC
android·ffmpeg·音视频·流媒体
不太会编程的IT男4 天前
在 Jetson Orin 开发套件上使用 Hardware Encoder / Decoder 构建 FFmpeg
ffmpeg·视频编解码·h.264
m0_687399844 天前
写一个Ununtu C++ 程序,调用ffmpeg API, 来判断一个数字电影的视频文件mxf 是不是Jpeg2000?
开发语言·c++·ffmpeg