正在为i386编译x264
Compiling x264 for i386
如何为i386体系结构编译x264库?通常为了强制一个体系结构,我会使用以下命令:
./configure CC="gcc -arch i386" CXX="g++ -arch i386"
但它似乎不适用于x264。
为了编译x264,我配置并制作了它,这将生成一个x86_64库。当我试图使用上面的命令来强制i386体系结构时,我收到以下消息:
未知选项CC=gcc-arch i386,忽略未知选项CXX=g++-arch i 386,忽略
然后,配置脚本会打印出它是为X86_64平台配置的。我希望看到它为i386平台配置,并生成一个i386二进制文件。
自动工具化configure
脚本具有特殊的命令行参数--build
和--host
,用于配置交叉编译。一些旧的配置脚本试图通过检查编译器的输出来确定它们是交叉编译的,但明确地告诉配置脚本要理智得多,也更健壮。
例如,请参见此处。或者这个问题。
(哦,您看到的"未知选项"错误的直接原因是环境变量覆盖了sh命令行上脚本名称之前的go,而不是之后的go。它不是make
,其中变量定义可以在make命令行本身上给出。(
在阅读了configure脚本和config.sub文件后,我发现以下内容适用于构建libx264的i386版本:
./configure --host=i386-apple-darwin
我还曾经遇到过"找不到可工作的C编译器"的错误。我已将LDFLAGS环境变量设置为错误。因此,在继续操作之前,请确保LDFLAGS和CFLAGS为空(或良好(。
export CFLAGS=""
export LDFLAGS=""
如果您有x86-64 gcc,您可以提供"-m32"以要求它编译32位二进制文件。所以你应该能够使用这样的配置:
./configure CFLAGS="-m32"
然而,如果这不起作用,那可能是自动冷却中的一个错误,CFLAGS将被覆盖。您可以尝试的替代方案:
make CFLAGS="-m32"
后者的问题是,你必须记住这样做,否则你最终会将问题与为不同体系结构构建的一些对象文件联系起来。
根据苹果在http://developer.apple.com/library/mac/#documentation/Porting/Conceptual/PortingUnix/compiling/compiling.html尝试:
./configure
make CFLAGS="-arch i386" LDFLAGS="-arch i386"
如果这不起作用,也添加-isys根标志(但10.6或10.7而不是10.4u(