當然,這是可能的,這是你平時做的事情時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,你需要上傳的不僅僅是二進制文件... –