日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > linux >内容正文

linux

x86_64 arm制linux-gcc,arm-linux-gcc 制作

發(fā)布時間:2025/3/12 linux 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 x86_64 arm制linux-gcc,arm-linux-gcc 制作 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

序言:其實,如果沒有充裕的時間,交叉編譯器完全不用自己建,網(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)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。