构建arm-linux-gnueabi-gcc-4.6.3交叉编译链

2020-02-13来源: eefocus关键字:arm-linux-gnueabi-gcc-4  6  3  交叉编译链

一、准备工作

1、准备文件

binutils-2.22.tar.bz2

gcc-4.6.3.tar.bz2

glibc-2.14.1.tar.xz

glibc-ports-2.14.1.tar.gz

glibc-linuxthreads-2.5.tar.bz2

gdb-7.4.1.tar.bz2

linux-2.6.38.8.tar.bz2

mpfr-3.1.1.tar.bz2

mpc-1.0.1.tar.gz

gmp-5.1.0.tar.bz2

 

2、建立以下变量,方便稍候的输入

#vim ~/.bashrc

export TARGET=arm-linux-gnueabi
export PREFIX=/usr/local/arm-linux-gcc/4.6.3
export TARGET_PREFIX=$PREFIX/$TARGET
export PATH=$PATH:$PREFIX/bin

 

3、为宿主机安装mpfr、mpc、gmp

#tar -xvf gmp-5.1.0.tar.bz2

#cd gmp-5.1.0

#mkdir build

#cd build

#../configure

#make all -j4

#make install

 

#tar -xvf mpfr-3.1.1.tar.bz2

# cd mpfr-3.1.1
#mkdir build

#cd build

#../configure

#make all -j4

#make install

 

#tar -xvf mpc-1.0.1.tar.gz

#cd mpc-1.0.1

#mkdir build

#cd build

#../configure

#make all -j4

#make install

 

4、复制linux-kernel-headers

#tar -xvf linux-2.6.38.8.tar.bz2

#cd linux-2.6.38.8

#make include/linux/version.h
  CHK     include/linux/version.h
  UPD     include/linux/version.h

#mkdir -p $TARGET_PREFIX/include

#cp -r ./include/linux/ $TARGET_PREFIX/include

#cp -r ./include/asm-generic/ $TARGET_PREFIX/include

#cp -r ./arch/arm/include/asm/ $TARGET_PREFIX/include

 

二、编译binutils

#tar -xvf binutils-2.22.tar.bz2

#cd binutils-2.22

#mkdir build

#cd build

#../configure --prefix=$PREFIX --target=$TARGET

#make all -j4

#make install

 

三、初步编译gcc(不带glibc支持)

#tar -xvf gcc-4.6.3.tar.bz2

 

重新解压mpfr-3.1.1.tar.bz2、mpc-1.0.1.tar.gz、gmp-5.1.0.tar.bz2,并改名复制至gcc-4.6.3中

#rm -rf mpfr-3.1.1 mpc-1.0.1  gmp-5.1.0

 

#tar -xvf gmp-5.1.0.tar.bz2

#mv gmp-5.1.0 gmp

#mv ./gmp ./gcc-4.6.3

 

#tar -xvf mpfr-3.1.1.tar.bz2

#mv mpfr-3.1.1 mpfr

#mv ./mpfr ./gcc-4.6.3

 

#tar -xvf mpc-1.0.1.tar.gz

#mv mpc-1.0.1 mpc

#mv ./mpc ./gcc-4.6.3

 

#cd gcc-4.6.3

#mkdir build

#cd build

#../configure --prefix=$PREFIX --target=$TARGET --without-headers --enable-languages=c --disable-threads --with-newlib --disable-shared --disable-libmudflap --disable-libssp --disable-decimal-float
#make all-gcc -j4

#make install-gcc

#make all-target-libgcc -j4

#make install-target-libgcc

 

四、编译glibc

#tar -xvf glibc-2.14.1.tar.xz

#tar -xvf glibc-ports-2.14.1.tar.gz

#mv glibc-ports-2.14.1 ports
#mv ./ports/ ./glibc-2.14.1

#tar -xvf glibc-linuxthreads-2.5.tar.bz2 --directory=./glibc-2.14.1

 

# cd glibc-2.14.1

# mkdir build

# cd build

# CC=$TARGET-gcc

# ln -s /usr/local/arm-linux-gcc/4.6.3/lib/gcc/arm-linux-gnueabi/4.6.3/libgcc.a /usr/local/arm-linux-gcc/4.6.3/lib/gcc/arm-linux-gnueabi/4.6.3/libgcc_eh.a

 

创建config.cache配置文件

# vim config.cache

libc_cv_forced_unwind=yes

libc_cv_c_cleanup=yes

libc_cv_arm_tls=yes

 

# ../configure --host=$TARGET --target=$TARGET --prefix=$TARGET_PREFIX --enable-add-ons --disable-profile --cache-file=config.cache --with-binutils=$PREFIX/bin --with-headers=$TARGET_PREFIX/include

#make all -j4

#make install

 

五、重新编译gcc

# cd gcc-4.6.3/build/

# rm -rf *

# ../configure --prefix=$PREFIX --target=$TARGET --enable-shared --enable-languages=c,c++

# make all -j4

# make install

 

六、编译gdb

# tar -xvf gdb-7.4.1.tar.bz2 
# ../configure --prefix=$PREFIX --target=$TARGET

# make all -j4

# make install

 

七、创建链接

# cd $PREFIX/bin

# ln -s arm-linux-gnueabi-addr2line arm-linux-addr2line
# ln -s arm-linux-gnueabi-ar arm-linux-ar
# ln -s arm-linux-gnueabi-as arm-linux-as
# ln -s arm-linux-gnueabi-c++ arm-linux-c++
# ln -s arm-linux-gnueabi-c++filt arm-linux-c++filt
# ln -s arm-linux-gnueabi-cpp arm-linux-cpp
# ln -s arm-linux-gnueabi-elfedit arm-linux-elfedit
# ln -s arm-linux-gnueabi-g++ arm-linux-g++
# ln -s arm-linux-gnueabi-gcc arm-linux-gcc
# ln -s arm-linux-gnueabi-gcc-4.6.3 arm-linux-gcc-4.6.3
# ln -s arm-linux-gnueabi-gcov arm-linux-gcov
# ln -s arm-linux-gnueabi-gdb arm-linux-gdb
# ln -s arm-linux-gnueabi-gdbtui arm-linux-gdbtui
# ln -s arm-linux-gnueabi-gprof arm-linux-gprof
# ln -s arm-linux-gnueabi-ld arm-linux-ld
# ln -s arm-linux-gnueabi-ld.bfd arm-linux-ld.bfd
# ln -s arm-linux-gnueabi-nm arm-linux-nm
# ln -s arm-linux-gnueabi-objcopy arm-linux-objcopy
# ln -s arm-linux-gnueabi-objdump arm-linux-objdump
# ln -s arm-linux-gnueabi-ranlib arm-linux-ranlib
# ln -s arm-linux-gnueabi-readelf arm-linux-readelf
# ln -s arm-linux-gnueabi-run arm-linux-run
# ln -s arm-linux-gnueabi-size arm-linux-size
# ln -s arm-linux-gnueabi-strings arm-linux-strings
# ln -s arm-linux-gnueabi-strip arm-linux-strip

 

完成

关键字:arm-linux-gnueabi-gcc-4  6  3  交叉编译链 编辑:什么鱼 引用地址:http://news.eeworld.com.cn/mcu/ic488092.html 本网站转载的所有的文章、图片、音频视频文件等资料的版权归版权所有人所有,本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如果本网所选内容的文章作者及编辑认为其作品不宜公开自由传播,或不应无偿使用,请及时通过电子邮件或电话通知我们,以迅速采取适当措施,避免给双方造成不必要的经济损失。

上一篇:为ARM编译Glib
下一篇:ARM指令集—SWP指令

关注eeworld公众号 快捷获取更多信息
关注eeworld公众号
快捷获取更多信息
关注eeworld服务号 享受更多官方福利
关注eeworld服务号
享受更多官方福利

推荐阅读

使用Qt ARM交叉编译提示“此qt版本具有一个未知的工具链”
在工具->选项->Qt4(高版本的Qt是“工具->选项->编译和运行->Qt4”)中,添加ARM版本的qmake时,提示“此qt版本具有一个未知的工具链”我遇到了两个情况都提示这个。第一种是由于QtCreator没有权限访问mkspecs路径导致的,qt-arm使用的默认路径/usr/local/Trolltech/QtEmbedded-4.7.3-arm ,默认用户没有访问mkspecs文件夹里的文件的权限。两种办法:1.给当前用户访问权限sudo chmod 775 mkspecs -R注意,只给mkspecs/qws文件夹权限是不行的,因为里面的配置文件写了,还要访问common等文件夹,干脆
发表于 2020-02-14
嵌入式linux-arm交叉编译工具链的构建
=${SYSROOT} modules_install   注意 :文中的大部分#号是自己当初为了分步编译差错方便而屏蔽掉的部分。自己编译的时候可以去掉。顺便说一下我是在suse环境下建立这个交叉编译环境的,内核是2.6以上的版本,其中—build=i686-pc-linux-gnu。 几个简单的命令: :set nu 显示文本行号。 :1,5s/^/#/g可以在文本的1~5行添加一个#号,也即屏蔽掉这几行。1,5s/^#//g去掉文本1~5行文本开头的#号。   第三步  测试程序Helloworld.c  
发表于 2016-08-13
AT91RM9200引导程序的建立(一)建立交叉编译工具链
写在前面:     本系列文章将详细的讲述AT91RM9200引导程序的建立过程,其中包括建立交叉编译工具链,gdb+gdbserver的编译安装使用,tftp,NFS的安装使用,超级终端或者minicom的使用,内核的编译升级,U-Boot的移植,Ramdisk、根文件系统的建立制作,busybox的编译、应用等。从而重现完整的开发过程。在写这个文档的过程中,本人参考了许多资料,在这里要感谢互联网,感谢所有社区,论坛里无私提供帮助的同行们。特别感谢一下鲁郁先生,是他让我在AT91RM9200上成功的移植了U-Boot1.1.4。本人是从不懂一路走来,走的过程中将开发过程详细记述下来
发表于 2016-06-17
arm嵌入式交叉编译工具链
1、arm-linux-gcc    常用的参数:-o[制定输出文件名] -c[只到编译停止,不连接] -g[键入调试信息] -xO[优化级别] -w/W(警告等级)    arm-linux-gcc -o dest source,直接编译出可执行文件elf格式         arm-linux-gcc -o dest source -c 只编译不连接,生成.o格式的库文件,用来提供给连接器连接成elf         其他的参数可以在GCC的手册中了解所有信息。 2、arm-linux-ld    如果GCC中使用的-c,需要
发表于 2016-06-17
今天使用crosstool制作了arm-linux交叉编译工具链
今天使用crosstool制作了arm-linux交叉编译工具链,并且成功编译和运行u-boot-1.3.0。 通过http://www.kegel.com/crosstool/了解crosstool。 要制作的交叉编译工具链版本为3.3.2。 具体步骤如下: 下载crosstool-0.43.tar.gz mkdir      /home/wxm/crosstool cp     crosstool-0.43.tar.gz     /home/wxm/crosstool cd 
发表于 2016-06-17
小广播
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号 电信业务审批[2006]字第258号函 京公海网安备110108001534 Copyright © 2005-2020 EEWORLD.com.cn, Inc. All rights reserved