Chinaunix首页 | 论坛 | 博客
  • 博客访问: 418430
  • 博文数量: 121
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 1393
  • 用 户 组: 普通用户
  • 注册时间: 2014-03-11 12:17
个人简介

www.vibexie.com vibexie@qq.com

文章分类

全部博文(121)

文章存档

2015年(55)

2014年(66)

我的朋友

分类: 嵌入式

2014-11-12 15:56:15

1.在FriendlyARM下载arm-linux-gcc,下载链接为

2.解压arm-linux-gcc.tar.gz
   [root@vibexie 4.4.3]# tar -xvzf arm-linux-gcc-4.4.3.tar.gz -C /
   该解压默认解压在/opt/目录下

3.将arm-linux-gcc的bin目录添加到环境变量中
   我们修改/etc/profile配置文件
   [root@vibexie 4.4.3]# vi /etc/profile
   修改下面一段代码

点击(此处)折叠或打开

  1. # Path manipulation
  2. if [ "$EUID" = "0" ]; then
  3.     pathmunge /usr/sbin
  4.     pathmunge /usr/local/sbin
  5.     pathmunge /opt/FriendlyARM/toolschain/4.4.3/bin /*我们添加的*/
  6. else
  7.     pathmunge /usr/local/sbin after
  8.     pathmunge /usr/sbin after
  9.     pathmunge /opt/FriendlyARM/toolschain/4.4.3/bin after  /*这也是添加的*/
  10. fi
我们应立即生效此修改操作(这样不用重启也能生效)
    [root@vibexie 4.4.3]# source /etc/profile

4.测试是否配置成功arm-linux-gcc
   [root@vibexie vibe]# arm-linux-gcc -v
   /opt/FriendlyARM/toolschain/4.4.3/bin/arm-linux-gcc: /opt/FriendlyARM/toolschain/4.4.3/bin/.arm-none-linux-gnueabi-gcc: /lib/ld-linux.so.2: bad ELF interpreter: 没有那个文件或目录
   /opt/FriendlyARM/toolschain/4.4.3/bin/arm-linux-gcc:行15: /opt/FriendlyARM/toolschain/4.4.3/bin/.arm-none-linux-gnueabi-gcc: 成功
   
    出现这样的输出表示还没有配置成功,我们看到“/lib/ld-linux.so.2: bad ELF interpreter: 没有那个文件或目”,这是因为我的linux系统是64位的fedora20,所以我们要安装glibc.i686
    [root@vibexie vibe]# yum install glibc.i686
    (有的系统还会有这样的错误error while loading shared libraries: libz.so.1,我们应该yum安装zlib.i686)
    成功安装glibc.i686后,再测试
[root@vibexie vibe]# arm-linux-gcc -v 
Using built-in specs.
Target: arm-none-linux-gnueabi
Configured with: /opt/FriendlyARM/mini2440/build-toolschain/working/src/gcc-4.4.3/configure --build=i386-build_redhat-linux-gnu --host=i386-build_redhat-linux-gnu --target=arm-none-linux-gnueabi --prefix=/opt/FriendlyARM/toolschain/4.4.3 --with-sysroot=/opt/FriendlyARM/toolschain/4.4.3/arm-none-linux-gnueabi//sys-root --enable-languages=c,c++ --disable-multilib --with-arch=armv4t --with-cpu=arm920t --with-tune=arm920t --with-float=soft --with-pkgversion=ctng-1.6.1 --disable-sjlj-exceptions --enable-__cxa_atexit --with-gmp=/opt/FriendlyARM/toolschain/4.4.3 --with-mpfr=/opt/FriendlyARM/toolschain/4.4.3 --with-ppl=/opt/FriendlyARM/toolschain/4.4.3 --with-cloog=/opt/FriendlyARM/toolschain/4.4.3 --with-mpc=/opt/FriendlyARM/toolschain/4.4.3 --with-local-prefix=/opt/FriendlyARM/toolschain/4.4.3/arm-none-linux-gnueabi//sys-root --disable-nls --enable-threads=posix --enable-symvers=gnu --enable-c99 --enable-long-long --enable-target-optspace
Thread model: posix
gcc version 4.4.3 (ctng-1.6.1) 

    我们现在尝试编译一个写好目标板程序,进入该程序目录,我们make一下
    [root@vibexie code]$ make
    arm-linux-gcc -Wall -Wstrict-prototypes -O2 -fomit-frame-pointer -ffreestanding -c -o crt0.o crt0.S
    /opt/FriendlyARM/toolschain/4.4.3/libexec/gcc/arm-none-linux-gnueabi/4.4.3/cc1: error while loading shared libraries: libstdc++.so.6: cannot open shared object file: No such file or     directory
    make: *** [leds.bin] 错误 1

    在编译过程中出现了错误,提示未找到/usr/lib/目录下的libstdc++.so.6,这是因为我的系统是64位的fedora20,libstdc++.so.6默认在/user/lib64。我们现在得装i686版的stdlibc++.so.6
    
    [root@vibexie lib64]# yum whatprovides libstdc++.so.6
    已加载插件:langpacks, refresh-packagekit
    libstdc++-4.8.2-1.fc20.i686 : GNU Standard C++ Library
    源    :fedora
    匹配来源:
    提供    :libstdc++.so.6

    libstdc++-4.8.3-7.fc20.i686 : GNU Standard C++ Library
    源    :updates
    匹配来源:
    提供    :libstdc++.so.6

    根据以上输出,我们选择安装最新的listdc++  i686版的库,即libstdc++-4.8.3-7.fc20.i686
    [root@vibexie lib64]# yum install libstdc++-4.8.3-7.fc20.i686
    安装成功后,我们再make编译一下
    [root@vibexie code]# make
    arm-linux-gcc -Wall -Wstrict-prototypes -O2 -fomit-frame-pointer -ffreestanding -c -o crt0.o crt0.S
    arm-linux-gcc -Wall -Wstrict-prototypes -O2 -fomit-frame-pointer -ffreestanding -c -o leds.o leds.c
    arm-linux-ld -Ttext 0x0000000 crt0.o leds.o -o leds_elf
    arm-linux-objcopy -O binary -S leds_elf leds.bin
    arm-linux-objdump -D -m arm  leds_elf > leds.dis
    这样没有报错就编译成功了。同时,我们可以回到/usr/lib/目录下,就有了libstdc++.so.6了。
    OK,至此,我们的arm-linux-gcc就配置好了。
阅读(4109) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~