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的通用二进制文件,你可以参考我的构建scripts。 make_compile.py
编译 x86_64
和 arm64
二进制文件,make_universal.py
使用 lipo
生成通用二进制文件。
参考
我正在尝试在 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的通用二进制文件,你可以参考我的构建scripts。 make_compile.py
编译 x86_64
和 arm64
二进制文件,make_universal.py
使用 lipo
生成通用二进制文件。
参考