我想在Mac OS X 10.10上交叉编译ffmpeg 2.8.x,但是我收到了以下错误。
HOSTCC libavcodec/cabac_tablegen.o
In file included from libavcodec/cabac_tablegen.c:25:
In file included from libavcodec/cabac_functions.h:43:
libavcodec/arm/cabac.h:96:25: error: value '24' out of range for constraint 'M'
[byte]"M"(offsetof(CABACContext, bytestream)),
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../lib/clang/7.0.2/include/stddef.h:120:24: note:
expanded from macro 'offsetof'
#define offsetof(t, d) __builtin_offsetof(t, d)
^~~~~~~~~~~~~~~~~~~~~~~~
1 error generated.
make: *** [libavcodec/cabac_tablegen.o] Error 1
错误在主机cc中显示一些错误,主机cc为clang-700.1.81
$ gcc --version
Configured with: --prefix=/Applications/Xcode.app/Contents/Developer/usr --with-gxx-include-dir=/usr/include/c++/4.2.1
Apple LLVM version 7.0.2 (clang-700.1.81)
Target: x86_64-apple-darwin14.5.0
Thread model: posix
在我将Xcode升级到7.2之前,它运行良好。
对于ffmpeg 3.x,没有这样的问题。但我需要的ffmpeg版本是2.8.x.如果不将Xcode降级到以前的版本,我该怎么办?
答案 0 :(得分:1)
这是主持人cc的问题。
我保留了当前版本的Xcode并安装了另一个版本的命令行工具Command_Line_Tools_OS_X_10.10_for_Xcode_6.4
。
此命令行工具的clang版本是
$ /Library/Developer/CommandLineTools/usr/bin/cc --version
Apple LLVM version 6.1.0 (clang-602.0.53) (based on LLVM 3.6.0svn)
Target: x86_64-apple-darwin14.5.0
Thread model: posix
在配置ffmpeg时将主机cc更改为此编译器。
./configure --host-cc=/Library/Developer/CommandLineTools/usr/bin/cc
现在可以编译而不会出错。