我已经成功地建立了几个跨GCC编译的,托管在OSX狮子和靶向I386-PC-solaris2.10和x86_64-Linux的GNU。 我有2.22 binutils在$ PATH中安装在$ BINUTILSROOT和$ BINUTILSROOT/bin下的目标。阅读http://gcc.gnu.org/install/configure.html,尤其cross-gcc不搜索目标为和路径中的ld?
--with-AS =路径 指定编译器应该使用汇编的路径指向,而不是一个由标准规则中找到一个汇编程序,它们是:
除非GCC正在用一个交叉编译器内置,检查的libexec/GCC /目标/版本目录。 libexec默认为exec-prefix/libexec; exec-prefix默认为前缀,默认为/ usr/local,除非被上面描述的--prefix = pathname开关覆盖。目标是目标系统的三倍,例如`sparc-sun-solaris2.7',版本表示GCC版本,例如3.0。
如果目标系统是你正在构建相同的,检查操作系统的特定目录(例如在/ usr/CCS/Sun Solaris上的2箱)。
检入PATH中名为前缀为目标系统三元组的工具。
检查路径的工具,它的名字不被目标系统前缀三倍,如果主机和目标系统的三重是相同的(换句话说,我们使用一台主机的工具,如果它可以被用于目标为好)。
我以为我的-GCC(与--with-GNU-作为--with-GNU-LD配置)将纷纷拿起分别把i386-pc-solaris2.10,作为和x86_64- linux-gnu-as(和相应的-ld),因为它们位于PATH中的$ BINUTILSROOT/bin中,所以应该应用上面列表中的第3个项目符号。 但是这似乎不起作用,并且我用dtrace证实了-gcc不会在PATH中搜索-as和-ld。 我发现的唯一的解决办法是工作是也充分的说明和ld加入
--with-AS = $ BINUTILSROOT /斌/ -as --with-LD = $ BINUTILSROOT /斌/配置GCC时-ld
。
难道我误解GCC文档,或者这是有交叉编译工作的唯一途径?
2012-04-16
abigagli