Post by 聚焦深空;1872998
更正一点,NEW_OS_HOST、NEW_OS_TARGET事实上相同才是伪交叉编译。
如i686-cross-linux-gnu、i686-pc-linux-gnu。我们建立的交叉编译、伪交叉编译工具链运行于宿主,所以工具链gcc配置时--build和--host相同。
使用gcc-4.3之前版本时只是不需显式指明而已。
因为x86_64 to i686仍有可能调用宿主的东西(我是multilib),所以我刚才实验了一下真正的交叉编译:x86_64 to mips。
这个有些难度,原因是安装Glibc-ports headers for mips需要调用for mips的编译器。这是个死循环。解决方法是在没有Glibc头文件的情况下编译裸编译器。方法:同gcc-static的编译参数,然后make all-gcc && make install-gcc。(现在有点明白为什么新版本需要让make all-gcc不编译libgcc了,因为现在编译libgcc需要Glibc头文件,而之前的版本并不需要)
第二次编译GCC相当于正常编译GCC的第一次static。经过验证,make all-target-libgcc可以一次成功,但是make install-target-libgcc只会安装libgcc,不安装编译器。所以编译安装方式是
make all-target-libgcc
make install-gcc
make install-target-libgcc