3

我将如何为 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

4 回答 4

5

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

例如,请参见此处。还是这个问题

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

于 2011-08-25T15:06:47.437 回答
4

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

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

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

export CFLAGS=""
export LDFLAGS=""
于 2012-11-28T20:37:16.337 回答
2

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

./configure CFLAGS="-m32"

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

make CFLAGS="-m32"

后者的问题是你必须记住这样做,否则你最终会遇到为不同架构构建的一些目标文件的链接问题。

于 2011-08-25T15:24:14.733 回答
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)

于 2011-08-27T16:48:36.720 回答