当然,这是可能的,这是你平时做的事情时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
禁用本地自然语言支持(a.k.a:在您自己的语言编译器打印错误),并且只使用英语的消息。这不是必须的,但它肯定会加速构建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! BTW,--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。
BTW:请注意,交叉编译GCC本身是一个更脆弱过程。所有这些帖子都只是理论上的,因为我不会仅仅为了这样做而做所有这些步骤。如果您有任何重大问题,或者如果有人在步骤中发现错误,请发表评论;)。
编辑:显然,你必须编译Glibc和所有的时髦的东西太...
我希望这使得一些光你!
是否可以上传代码并在UNIX服务器上本地编译? –
先问你的导师,如果你可以在C++ 11中编码。也许他(可惜)希望你学习C++ 98 ... –
如果你以前从未这样做过,你可能会花费数天的时间来交叉编译GCC。这是值得的痛苦?可能将您的任务移植到C++ 98可能(可悲)更容易。如果你确实交叉编译GCC,你需要上传的不仅仅是二进制文件... –