ffmpeg 拒绝在 M1 mac 上为 x86_64 arch 编译

ffmpeg refuses to compile for x86_64 arch on M1 mac

我正在尝试在 MacOS 上构建 ffmpeg 的通用二进制文件,方法是编译两次(针对 arm64 和 x86_64),然后使用 lipo 工具组合生成的二进制文件。我在 M1 Mac 上,所以 uname -m returns arm64 在我的机器上。

当运行配置脚本如下:

./configure --arch=x86_64

它输出:

install prefix            /usr/local
source path               .
C compiler                gcc
C library                 
ARCH                      c (generic)
...

并且在 运行 make 之后,使用 lipo -archs 检查构建的二进制文件表明它正在为 arm64.

构建它们

如果我将 --enable-crosscompile 添加到配置调用,结果是相同的。

基于 ,我也尝试了 --arch=x86,但结果完全相同,将脚本显示为 c (generic) 并使用 lipo 检查人工制品显示它们是为arm64 架构。

有人有什么想法吗?为什么配置脚本只是拒绝为 x86_64 构建?

您可以指定 -cc 使 clang 编译 x86_64 二进制文件。 尝试:

./configure --enable-cross-compile --prefix=./install_x86_64 --arch=x86_64 --cc='clang -arch x86_64'

注意:不要忘记通过

清除过时的文件
make distclean

顺便说一句,我已经成功构建了FFmpeg的通用二进制文件,你可以参考我的构建scriptsmake_compile.py 编译 x86_64arm64 二进制文件,make_universal.py 使用 lipo 生成通用二进制文件。

参考

https://ffmpeg.org/platform.html

https://github.com/FFmpeg/gas-preprocessor