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 \

相关推荐
无巧不成书02181 天前
FFmpeg 保姆级安装教程!Windows/macOS/Linux全平台覆盖,
windows·macos·ffmpeg
kkoral3 天前
OpenCV 与 FFmpeg 的关系
opencv·ffmpeg
kkoral3 天前
如何在 Python 中使用 OpenCV 调用 FFmpeg 的特定功能?
python·opencv·ffmpeg
山栀shanzhi3 天前
【FFmpeg】音视频MP4封装格式转封装MOV
ffmpeg·音视频
山栀shanzhi3 天前
【FFmpeg】是什么是未压缩的裸流?
c++·ffmpeg
Maverick064 天前
02-SQL执行计划与优化器:Oracle是怎么决定“该怎么查“的
数据库·sql·oracle·ffmpeg
EasyDSS4 天前
RTMP高清推流直播/智能转码/无人机直播EasyDSS破局旅游慢直播痛点
ffmpeg·旅游·视频转码·fmp4·点播技术
EasyDSS4 天前
RTMP高清推流直播/视频转码EasyDSS在无人机RTMP直播场景中的应用技术解析
ffmpeg·音视频·无人机·视频转码·语音转写·点播技术
私人珍藏库4 天前
[Windows] FFmpeg 图形化:EasyFF v0.17
ffmpeg·媒体·工具·软件·win·多功能
EasyDSS5 天前
场景深耕:低延迟高并发EasyDSS无人机RTMP高清推流直播技术剖析
ffmpeg·webrtc·rtmp