芭樂永生

2009年10月3日 星期六

Cross Compiler

安裝套件
cygwin
libgmp-devel
libmpfr-devel

設定環境參數
export CC="gcc-4"
export CXX="g++-4"

編譯 binutils-2.19.1
cd binutils-2.19.1
./configure --target=i686-unknown-linux-gnu
make
make install
cd ..

複製 binutils-2.19.1
mkdir -p i686-unknown-linux-gnu/bin
cp /usr/local/bin/i686-unknown-linux-gnu-*.* i686-unknown-linux-gnu/bin

編譯 gcc-4.1.2
cd gcc-4.1.2
./configure --target=i686-unknown-linux-gnu --enable-languages=c,c++ --enable-shared --with-system-zlib --without-included-gettext --enable-threads=posix --disable-nls --enable-__cxa_atexit --enable-clocale=gnu --enable-libstdcxx-debug --enable-mpfr --enable-checking=release
make all-gcc
cd ..

複製 gcc-4.1.2
mkdir -p i686-unknown-linux-gnu/bin
mkdir -p i686-unknown-linux-gnu/libexec/gcc/i686-unknown-linux-gnu/4.1.2
cp /bin/cygwin1.dll i686-unknown-linux-gnu/bin/cygwin1.dll
cp /bin/cygz.dll i686-unknown-linux-gnu/bin/cygz.dll
cp /bin/cygwin1.dll i686-unknown-linux-gnu/libexec/gcc/i686-unknown-linux-gnu/4.1.2/cygwin1.dll
cp /bin/cygiconv-2.dll i686-unknown-linux-gnu/libexec/gcc/i686-unknown-linux-gnu/4.1.2/cygiconv-2.dll
cp gcc-4.1.2/host-i686-pc-cygwin/gcc/cpp.exe i686-unknown-linux-gnu/bin/i686-unknown-linux-gnu-cpp.exe
cp gcc-4.1.2/host-i686-pc-cygwin/gcc/g++.exe i686-unknown-linux-gnu/bin/i686-unknown-linux-gnu-g++.exe
cp gcc-4.1.2/host-i686-pc-cygwin/gcc/xgcc.exe i686-unknown-linux-gnu/bin/i686-unknown-linux-gnu-gcc.exe
cp gcc-4.1.2/host-i686-pc-cygwin/gcc/cpp.exe i686-unknown-linux-gnu/bin/i686-unknown-linux-gnu-c++.exe
cp gcc-4.1.2/host-i686-pc-cygwin/gcc/g++.exe i686-unknown-linux-gnu/bin/i686-unknown-linux-gnu-g++-4.1.2.exe
cp gcc-4.1.2/host-i686-pc-cygwin/gcc/xgcc.exe i686-unknown-linux-gnu/bin/i686-unknown-linux-gnu-gcc-4.1.2.exe
cp gcc-4.1.2/host-i686-pc-cygwin/gcc/cc1.exe i686-unknown-linux-gnu/libexec/gcc/i686-unknown-linux-gnu/4.1.2/cc1.exe
cp gcc-4.1.2/host-i686-pc-cygwin/gcc/cc1plus.exe i686-unknown-linux-gnu/libexec/gcc/i686-unknown-linux-gnu/4.1.2/cc1plus.exe
cp gcc-4.1.2/host-i686-pc-cygwin/gcc/collect2.exe i686-unknown-linux-gnu/libexec/gcc/i686-unknown-linux-gnu/4.1.2/collect2.exe

設置
cd i686-unknown-linux-gnu/bin
ln -s i686-unknown-linux-gnu-ar.exe ar.exe
ln -s i686-unknown-linux-gnu-as.exe as.exe
ln -s i686-unknown-linux-gnu-c++.exe c++.exe
ln -s i686-unknown-linux-gnu-g++.exe g++.exe
ln -s i686-unknown-linux-gnu-gcc.exe gcc.exe
ln -s i686-unknown-linux-gnu-ld.exe ld.exe
ln -s i686-unknown-linux-gnu-nm.exe nm.exe
ln -s i686-unknown-linux-gnu-objcopy.exe objcopy.exe
ln -s i686-unknown-linux-gnu-ranlib.exe ranlib.exe
ln -s i686-unknown-linux-gnu-strip.exe strip.exe
cd ../..

mkdir -p i686-unknown-linux-gnu/i686-unknown-linux-gnu
cd i686-unknown-linux-gnu/i686-unknown-linux-gnu
ln -s ../include include
ln -s ../lib lib
ln -s ../bin bin
cd ../..

複製 linux 端的 header library
/usr/include -> i686-unknown-linux-gnu/include
/usr/lib -> i686-unknown-linux-gnu/lib

修改在 i686-unknown-linux-gnu/include 和 i686-unknown-linux-gnu/lib 裡面的
i486-linux-gnu -> i686-unknown-linux-gnu


完成 !!

0 Comments:

張貼留言

<< Home