编译FFmpeg时触发ld信号11错误求助(WSL环境)
解决WSL下编译FFmpeg时链接器Segmentation Fault的问题
你在Win10 v1709的WSL里编译FFmpeg时碰到的链接器(ld)崩溃问题,在旧版WSL1里属于比较典型的兼容性问题,尤其是内存管理和链接阶段的资源占用冲突。给你几个针对性的解决思路:
升级到WSL2:Win10 v1709搭载的是WSL1,它对Linux系统调用的模拟存在不少局限性,链接大项目时容易因为内存管理问题触发段错误。你可以先把Windows系统升级到1903及以上版本,然后启用虚拟机平台功能,再将Ubuntu子系统切换为WSL2模式,这能从根本上改善编译环境的稳定性。
降低编译的资源压力:链接阶段崩溃很多时候是内存不足导致的,你可以尝试这些调整:
- 使用单线程编译链接:
make -j1,避免多线程同时占用大量内存 - 关闭调试信息生成:在configure时添加
--disable-debug参数,减少可执行文件的调试符号,降低内存消耗 - 精简编译组件:关闭不需要的编码器、解码器或功能模块,比如用
--disable-all后再按需启用需要的功能,缩小编译范围
- 使用单线程编译链接:
更新链接器并重新检查依赖:
- 先更新binutils包(包含ld):
sudo apt update && sudo apt install --only-upgrade binutils,修复旧版链接器的已知bug - 重新编译所有依赖库(比如x264、fdk-aac等),确保它们的编译参数和FFmpeg兼容,且没有损坏的编译产物
- 先更新binutils包(包含ld):
这里给你一个简化的configure示例,你可以试试:
./configure --prefix=/usr/local --disable-debug --disable-doc --disable-static --enable-shared --enable-gpl --enable-libx264 make -j1 sudo make install
内容的提问来源于stack exchange,提问作者Leo Zerino




