为i386编译x264

时间:2011-08-25 14:57:48

标签: c++ c cross-compiling x264 i386

如何为i386架构编译x264库?通常强制使用架构我会使用以下命令:

./configure CC="gcc -arch i386" CXX="g++ -arch i386"

但它似乎不适用于x264。

要编译x264我配置它并制作它,这会产生一个x86_64库。当我尝试使用上述命令强制i386架构时,我收到以下消息:

  

未知选项CC = gcc -arch i386,忽略未知选项CXX = g ++ -arch i386,忽略

然后,配置脚本将打印出为X86_64平台配置的脚本。我希望看到它为i386平台配置并生成i386二进制文件。

4 个答案:

答案 0 :(得分:5)

自动缩减的configure脚本具有用于配置交叉编译的特殊命令行参数--build--host。一些旧的配置脚本试图通过检查编译器的输出来确定它们是交叉编译的,但是显式地告诉配置脚本更加安全和健壮。

例如,请参阅here。或this question

(哦,您看到的“未知选项”错误的直接原因是环境变量覆盖在之前命令行上的脚本名称不是在它之后。它不是make,可以在make命令行本身给出变量定义。)

答案 1 :(得分:4)

在阅读configure脚本和config.sub文件后,我发现以下内容可用于构建ix86版本的libx264:

./configure --host=i386-apple-darwin

我也遇到过“找不到工作的C编译器”错误。我已经将LDFLAGS环境变量设置为错误。因此,在继续之前,请确保LDFLAGS和CFLAGS为空(或良好)。

export CFLAGS=""
export LDFLAGS=""

答案 2 :(得分:2)

如果你有一个x86-64 gcc,你可以提供“-m32”来要求它编译一个32位的二进制文件。所以你应该能够像这样使用configure:

./configure CFLAGS="-m32"

如果不起作用,则可能是自动工具中的错误,CFLAGS会被覆盖。您可以尝试另一种选择:

make CFLAGS="-m32"

后者的问题是你必须记住这样做,否则你最终会将问题与为不同架构构建的一些目标文件联系起来。

答案 3 :(得分:0)

根据Apple在http://developer.apple.com/library/mac/#documentation/Porting/Conceptual/PortingUnix/compiling/compiling.html的建议 尝试:

./configure
make CFLAGS="-arch i386" LDFLAGS="-arch i386"

如果不起作用,也添加-isysroot标志(但是10.6或10.7而不是10.4u)