C++ 为i386编译x264
如何编译i386体系结构的x264库?通常,为了强制架构,我会使用以下命令:C++ 为i386编译x264,c++,c,cross-compiling,x264,i386,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,忽略 然后,configure脚本打印它是为X86_64平台配置
./configure CC="gcc -arch i386" CXX="g++ -arch i386"
但它似乎对x264不起作用
为了编译x264,我对其进行了配置并使其生效,这将生成一个x86_64库。当我尝试使用上述命令强制i386架构时,我收到以下消息: 未知选项CC=gcc-arch i386,忽略未知选项CXX=g++-arch i386,忽略
然后,configure脚本打印它是为X86_64平台配置的。我希望看到它为i386平台配置,并生成i386二进制。自动工具
配置
脚本具有用于配置交叉编译的特殊命令行参数--build
和--host
。一些旧的配置脚本试图通过检查编译器的输出来确定它们是交叉编译的,但是显式地告诉配置脚本更明智、更健壮
例如,见。或者
(哦,您看到的“未知选项”错误的直接原因是环境变量覆盖在sh命令行上的脚本名称之前,而不是之后。它不是在make命令行上给出变量定义的make命令行本身。)如果您有x86-64 gcc,您可以提供“-m32”命令它编译32位二进制文件。因此,您应该能够使用如下配置:
./configure CFLAGS="-m32"
但是,如果这不起作用,则可能是自动冷却中的一个错误,CFLAG被覆盖。您可以尝试以下替代方法:
make CFLAGS="-m32"
后者的问题是,你必须记住这样做,否则你最终会将问题与为不同架构构建的一些目标文件联系起来。根据苹果公司在 尝试:
如果这不起作用,还可以添加-isysroot标志(但10.6或10.7而不是10.4u)在阅读配置脚本和config.sub文件后,我发现以下内容可以用于构建i386版本的libx264:
./configure --host=i386-apple-darwin
我还遇到了“找不到正在工作的C编译器”错误。我已将LDFLAGS环境变量设置为错误。因此,在继续之前,请确保LDFLAGS和CFLAGS为空(或良好)
export CFLAGS=""
export LDFLAGS=""
定义“它似乎不起作用”。你预计会发生什么?相反,您看到了什么?要编译x264,我将对其进行配置并制作,这将生成一个x86_64库。当我尝试使用上述命令强制i386架构时,我收到以下消息:未知选项CC=gcc-arch i386,忽略未知选项CXX=g++-arch i386,忽略配置脚本,然后打印它是为X86_64平台配置的。我希望看到它为i386平台配置并生成i386二进制文件。您是否尝试过
/configure--help
?如果我没记错的话,x264不使用普通自动工具。我有,它对交叉编译没有帮助,它说有一个--host参数,但我不知道我需要为i386configure输入的主机很久以来一直采用这种方式。哦。很明显,OP使用的那个没有。(我从他引用的错误信息的措辞推断出它的行为。)是的,你是对的。而且并非所有的配置脚本都是autoconf。因此,如果我使用./configure--host=i386-apple-darwin10,它会显示“找不到正在工作的C编译器”,有没有办法打印有效主机的列表?您可能还需要LDFLAGS=“-m32”来正确完成链接。不幸的是,这不起作用,它只会抛出很多错误
export CFLAGS=""
export LDFLAGS=""