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 \

相关推荐
aqi0020 小时前
FFmpeg开发笔记(九十八)基于FFmpeg的跨平台图形用户界面LosslessCut
android·ffmpeg·kotlin·音视频·直播·流媒体
带土12 天前
2. Linux下FFmpeg C++音视频解码+推流开发
linux·c++·ffmpeg
aqi002 天前
FFmpeg开发笔记(九十七)国产的开源视频剪辑工具AndroidVideoEditor
android·ffmpeg·音视频·直播·流媒体
Sleepless_斑马2 天前
RTMP/RTSP流媒体服务器搭建、ffmpeg推流桌面、vlc拉流
ffmpeg·rtmp·rtsp
炼金术2 天前
SkyPlayer v1.1.0 - 在线视频播放功能更新
android·ffmpeg
喜欢吃豆2 天前
深度解析:FFmpeg 远程流式解复用原理与工程实践
人工智能·架构·ffmpeg·大模型·音视频·多模态
带土12 天前
1. FFmpeg入门
ffmpeg
Lueeee.2 天前
1.广告机项目-----ffmpeg播放准备
ffmpeg
心动啊1213 天前
FFMPeg在Python中的使用
ffmpeg
aqi003 天前
FFmpeg开发笔记(一百)国产的Android开源视频压缩工具VideoSlimmer
android·ffmpeg·音视频·直播·流媒体