x86_64 arm制linux-gcc,arm-linux-gcc 制作
序言:其實,如果沒有充裕的時間,交叉編譯器完全不用自己建,網(wǎng)上下載直接拿來用就可以了。
之所以寫這博客,一是為了和大家交流,二是為了防止由于時間的流逝再也找不到當(dāng)初的筆記。人說好記星不如爛筆頭,但是對于我們這些飄在上海居無定所的人來說,好記性不如寫博客,頻繁的搬遷可以讓你找不到當(dāng)初的筆記本,但是博客還是存在的。
第一步:下載必要的文件,我下載的文件如下:
Binutils 2.20,
GCC version 4.4.3,
Glibc 2.9,
Glibc-ports 2.9,
GMP version 4.3.2,
MPFR version?3.0.1:
第二部:為了方便打開兩個終端,分別命名為T1和T2
在TI下輸入如下命令:
export BUILDDIR=/home/zdl/build
export SRCDIR=/home/zdl/sources
export TARGETMACH=arm-none-linux-gnueabi
export BUILDMACH=x86_64-pc-linux-gnu
export INSTALLDIR=/home/zdl/arm
export SYSROOTDIR=/home/zdl/arm/sysroot
在T2輸入如下命令:export BUILDDIR=/home/zdl/build
export SRCDIR=/home/zdl/sources
export TARGETMACH=arm-none-linux-gnueabi
export BUILDMACH=x86_64-pc-linux-gnu
export INSTALLDIR=/home/zdl/arm
export SYSROOTDIR=/home/zdl/arm/sysroot
export CROSS=arm-none-linux-gnueabi
export CC=${CROSS}-gcc
export LD=${CROSS}-ld
export AS=${CROSS}-as
第三步:在/home/zdl下建立三個文件夾 sources,build,arm
以下是T1的行為:
將下載的文件解壓到sources目錄
編譯binutils:
mkdir $BUILDDIR/binutils
../../sources/binutils-2.20/configure --build=$BUILDMACH
--prefix=$INSTALLDIR --with-sysroot=$SYSROOTDIR
--target=$TARGETMACH
make
make
install
安裝內(nèi)核頭文件:
cd $SRCDIR/linux-2.6.18
make mrproper
make ARCH=arm s3c2410_defconfig
make ARCH=arm headers_checkmake ARCH=arm
INSTALL_HDR_PATH=$INSTALLDIR/sysroot/usr headers_install
Bootstrap
GCC:
mkdir
$BUILDDIR/init-gcc
cd $BUILDDIR/init-gcc../../sources/gcc-4.4.3/configure
--build=$BUILDMACH --host=$BUILDMACH --target=$TARGETMACH
--prefix=$INSTALLDIR --without-headers --enable-bootstrap
--enable-languages=c --disable-threads --enable-__cxa_atexit
--disable-libmudflap --with-gnu-ld --with-gnu-as --disable-libssp
--disable-libgomp --disable-nls --disable-shared
make all-gcc
install-gcc
make all-target-libgcc
install-target-libgcc
ln -s
/home/zdl/arm/lib/gcc/arm-none-linux-gnueabi/4.4.3/libgcc.a
/home/zdl/arm/lib/gcc/arm-none-linux-gnueabi/4.4.3/libgcc_sh.a
為glibc建立頭文件:
mkdir
$BUILDDIR/libc-header
cd $BUILDDIR/libc-header
echo "libc_cv_forced_unwind=yes" > config.cache
echo "libc_cv_c_cleanup=yes" ? config.cache
export PATH=$INSTALLDIR/bin:$PATH
../../sources/glibc-2.9/configure --build=$BUILDMACH
--host=$TARGETMACH --prefix=$SYSROOTDIR/usr
--with-headers=$SYSROOTDIR/usr/include --config-cache
--enable-add-ons=glibc-ports-2.9,nptl
--enable-kernel=2.6.18
libc_cv_c_cleanup=yes
make -k install-headers cross_compiling=yes
install_root=$SYSROOTDIR
ln -s /home/zdl/arm/lib/gcc/arm-none-linux-gnueabi/4.4.3/libgcc.a
/home/zdl/arm/lib/gcc/arm-none-linux-gnueabi/4.4.3/libgcc_eh.
建立glibc:
mkdir $BUILDDIR/glibc
cd $BUILDDIR/glibc
echo "libc_cv_forced_unwind=yes" > config.cache
echo "libc_cv_c_cleanup=yes" ? config.cache
../../sources/glibc-2.9/configure \--build=$BUILDMACH
--host=$TARGETMACH --prefix=/usr
--with-headers=$SYSROOTDIR/usr/include --config-cache
--enable-add-ons=glibc-ports-2.9,nptl --enable-kernel=2.6.18
make -k install-headers cross_compiling=yes
install_root=$SYSROOTDIR
make
make install_root=$SYSROOTDIR install
為ARM建立GCC:
mkdir $BUILDDIR/gcc
cd $BUILDDIR/gcc
echo "libc_cv_forced_unwind=yes" > config.cache
echo "libc_cv_c_cleanup=yes" ? config.cache
export CC=gcc
../../sources/gcc-4.4.3/configure --build=$BUILDMACH
--target=$TARGETMACH --prefix=$INSTALLDIR
--with-sysroot=$SYSROOTDIR --enable-languages=c --with-gnu-as
--with-gnu-ld --disable-multilib --with-float=soft \
--disable-sjlj-exceptions --disable-nls --enable-threads=posix
--enable-long-longx libc_cv_c_cleanup=yes
make all-gccmake
install-gcc
以下是T2的行為:
mkdir $BUILDDIR/gmp
cd $BUILDDIR/gmp
export CFLAGS=-static
../../sources/gmp-4.4.3/configure --build=$BUILDMACH
--host=$TARGETMACH --prefix=$INSTALLDIR --disable-shared
make
make install
mkdir $BUILDDIR/mpfr
cd $BUILDDIR/mpfr
../../sources/mpfr-3.0.1/configure --build=$BUILDMACH
--host=$TARGETMACH --prefix=$INSTALLDIR
--with-gmp=$INSTALLDIR
makemake install
建立最終的gcc:
mkdir $BUILDDIR/gcc-final
cd $BUILDDIR/gcc-final
export CC=gcc
echo "libc_cv_forced_unwind=yes" > config.cache
echo "libc_cv_c_cleanup=yes" ? config.cache
../../sources/gcc-4.4.3/configure --build=$BUILDMACH
--target=$TARGETMACH --prefix=$INSTALLDIR
--with-sysroot=$SYSROOTDIR --enable-languages=c --with-gnu-ld
--with-gnu-as --disable-multilib --with-float=soft \
--disable-sjlj-exceptions --disable-nls --enable-threads=posix
--disable-libmudflap --disable-libssp \
--enable-long=longx --with-shared --with-gmp=$INSTALLDIR
--with-mpfr=$INSTALLDIR
makem
make install
下邊就是測試了
sudo gedit
/etc/bash.bashrc
添加如下:
export
PATH=$INSTALLDIR/bin:$PATH 當(dāng)然$INSTALLDIR要用實際的地址代替
注銷后重新登錄,在終端輸入:
arm-none-linux-gnueabi-gcc
-v
顯示其編譯信息
在編譯一個helloworld.c試一下,都通過。
總結(jié)
以上是生活随笔為你收集整理的x86_64 arm制linux-gcc,arm-linux-gcc 制作的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 猜拳游戏html,JavaScript中
- 下一篇: linux 其他常用命令