当然有可能,而且是writing operating systems时你通常做事的方式。
首先,you need to take binutils in the toolbox 也是。一旦你拥有了所有的神圣源泉,让我们准备吧!
export PREFIX="$HOME/opt" # All the stuff will get installed here!
export TARGET=sparc-sun-solaris # I'm not *100%* sure if this is correct, check it yourself
export PATH="$PREFIX/bin:$PATH" # If you forget this/close the terminal, you're doomed!
现在,让我们和小怪物相处吧……应该构建 binutils 吧!
cd $HOME/src # Or where you have the sources
mkdir binutils-build
cd binutils-build
../binutils-src/configure --target=$TARGET --prefix="$PREFIX" --disable-nls
make
make install
--disable-nls 禁用对本地自然语言的支持(又名:编译器以您自己的语言打印错误!),并且只使用英语作为消息。这不是必须的,但它肯定会加快构建 binutils 的过程。
现在,编译 GCC 本身是一个非常脆弱的过程,它可能在任何地方失败,无论如何,所以要做好准备!这个过程很长(在某些机器上可能需要长达一个小时),但相信我,LLVM+Clang 更糟;)。
cd $HOME/src
cd gcc-src
./contrib/download_prerequisites # Get GMP, MPFR, and MPC
cd ..
mkdir gcc-build
cd gcc-build
../gcc-src/configure --target=$TARGET --prefix="$PREFIX" --disable-nls --enable-languages=c,c++
make all-gcc
make all-target-libgcc
make install-gcc
make install-target-libgcc
如果你在编译时没有遇到问题(相信我,你会除非你对这个世界太幸运了),你会有一个在你的机器上运行的工具链,但是为 SunOS/SPARC 编译!顺便说一句,--enable-languages=c,c++ 意味着 GCC 将支持编译 C 和 C++ 代码。不多不少,不多不少。试试看...
sparc-sun-solaris-g++ --version
现在,如果您想获得一个在服务器上运行的服务器编译器,您将不得不使用双 canadian cross。基本上,你要做的就是……
export PREFIX="$HOME/some-holy-directory" # This path *must* be the same for both your machine and the target server!
export HOST=$TARGET
然后再次重复编译过程,记住将选项--host=$HOST 添加到两个configure 脚本!完成后,您必须将some-holy-directory 恰好 的相同位置移动到服务器中。如果它不适合 500MB,那么,请询问您的老师您是否至少可以在自己的机器上编译作业,然后将它们上传到服务器。否则,您将被 C++98 排除在外。
顺便说一句:请注意,交叉编译 GCC 本身是一个更加脆弱的过程。所有这篇文章都只是理论上的,因为我不会为了这样做而做所有这些步骤。如果您有任何重大问题,或者如果有人在步骤中发现错误,请发表评论;)。
编辑:显然,您还必须构建 Glibc 和所有时髦的东西......
我希望这对你有所启发!