我正在尝试为自定义的基于debian的Linux系统交叉编译libSDL 1.2版。我正在使用的工具链已经正确配置,因此我只需在我想要的代码上运行gcc / g ++,结果输出与目标机器兼容。
当我在libSDL源目录中运行./configure --help
时,我发现我基本上可以设置一些环境变量来指向我的交叉编译器。
但是,我也看到以下选项:
System types:
--build=BUILD configure for building on BUILD [guessed]
--host=HOST cross-compile to build programs to run on HOST [BUILD]
我查看了configure.in
,build-scripts/config.sub
和build-scripts/config.guess
文件,但无法弄清楚它是如何工作的。
是否需要这些选项?如果没有,使用它们是否是个好主意?
答案 0 :(得分:1)
使用自动工具,您正在构建--build
并且--host
是您希望它运行的内容(还有--target
,但这只有在您正在编译的内容时才重要本身就是一个编译器)。 Autotools通常会自己找出--build
,所以如果你不需要,请不要指定它(但请查看/usr/lib/gcc
以查看编译器可能认为--build
应该是什么)
因此,例如,如果您在x86_64上为i686构建,请执行
./configure --host=i686-linux-gnu
(并使用CFLAGS等中的-m32
选项,但听起来你已经准备好了。)
如果您在i686上为x86_64构建,请执行
./configure --host=x86_64-linux-gnu
(你可以为所有类型的疯狂主机构建:rs6000-ibm-aix,sparc-sun-solaris,mips-idt-ecoff等等......假设你安装了相应的gcc交叉编译器...... )
GNU的页面就在这里:
http://www.gnu.org/software/automake/manual/html_node/Cross_002dCompilation.html