文档章节

arm-linux-gcc交叉编译器安装

钟一鸣
 钟一鸣
发布于 2014/01/09 15:16
字数 564
阅读 3649
收藏 3

在网上下载arm-linux-gcc-4.4.3.tar.gz。

1、解压#tar -zxvf arm-linux-gcc-4.4.3.tar.gz

2、打开解压目录,将FriendlyARM文件夹拷贝到文件夹usr/local/。

cd /usr/local/

cp -rv FriendlyARM /usr/local/

(交叉编译程序集都在/usr/local/arm/4.4.3/bin)

3、修改环境变量,将交叉编译器的路径加入到PATH。

方法一(未测过):修改/etc/bash.bashrc文件
                 #vi /etc/bash.bashrc
                 在最后加上:
                export PATH=$PATH:/usr/local/FriendlyARM/toolschain/4.4.3/bin
                export PATH
方法二(测试,无用):修改/etc/profile文件:
                # vi /etc/profile
               增加路径设置,在末尾添加如下,保存/etc/profile文件:
               export PATH=$PATH:/usr/local/FriendlyARM/toolschain/4.4.3/bin

方法三:#export PATH=$PATH:/usr/local/FriendlyARM/toolschain/4.4.3/bin

其实,直接采用方法三即可。

4、立即使新的环境变量生效。     

      对应方法一(未测过):#source /root/.bashrc
    对应方法二(未测过):# source /etc/profile
5、检查是否将路径加入到PATH:
      # echo $PATH
  显示的内容中有/usr/local/FriendlyARM/toolschain/4.4.3/bin,说明已经将交叉编译器的路径加入PATH。

6、测试是否安装成功
   # arm-linux-gcc -v
  显示arm-linux-gcc信息和版本。arm-linux-gcc成功安装。

7、小试牛刀。

  vi下编写hello.c程序。

int main(){

      printf("hello!\n");

      return 0;

}

#arm-linux-gcc hello.c -o hello (与gcc hello.c -o hello使用方法一样)。

有如下错误:

/usr/local/FriendlyARM/toolschain/4.4.3/bin/../libexec/gcc/arm-none-linux-gnueabi/4.4.3/cc1: /usr/lib/libstdc++.so.6: version `GLIBCXX_3.4.9' not found (required by /usr/local/FriendlyARM/toolschain/4.4.3/lib/libppl_c.so.2)
/usr/local/FriendlyARM/toolschain/4.4.3/bin/../libexec/gcc/arm-none-linux-gnueabi/4.4.3/cc1: /usr/lib/libstdc++.so.6: version `GLIBCXX_3.4.9' not found (required by /usr/local/FriendlyARM/toolschain/4.4.3/lib/libppl.so.7)

原因:strings /usr/lib/libstdc++.so.6 | grep GLIBC,返回结果没有GLIBCXX_3.4.9,接着输入ls -l /usr/lib/libstdc++.so.6 ,结果为:

lrwxrwxrwx 1 root root 18 02-13 19:06 /usr/lib/libstdc++.so.6 -> libstdc++.so.6.0.8

         libstdc++.so.6是个软链接,它链接到libstdc++.so.6.0.8。而libstdc++.so.6.0.8,没有`GLIBCXX_3.4.9'。版本过低。

解决办法:

      一、网上下载libstdc++.so.6.0.10。放到/urs/lib目录下。

      二、删除libstdc++.so.6。rm -rf /usr/lib/libstdc++.so.6。

      三、重做libstdc++.so.6。软链接,ln -s /usr/lib/libstdc++.so.6.0.10 /usr/lib/libstdc++.so.6.

      然后,重新输入#arm-linux-gcc hello.c -o hello。可以看到编译成功。运行#hello,"cannot execute binary file".

      arm-linux-gcc编译的文件只能在arm开发板上运行,所以此处提示正确。



© 著作权归作者所有

钟一鸣
粉丝 0
博文 12
码字总数 7275
作品 0
海淀
程序员
私信 提问
嵌入式交叉编译环境的搭建过程,图文解说

我晕,竟然图片不显示,还是看我的新浪博客吧!http://blog.sina.com.cn/s/blog_b90c3cdf0101g1p1.html 电脑系统:win7系统。虚拟机系统:workstation6.5 。虚拟机安装的linux版本:fedora9...

长平狐
2013/06/17
835
0
Ubuntu12.04嵌入式交叉编译环境arm-linu-gcc搭建过程,图解

安装环境 Linux版本:Ubuntu 12.04 内核版本:Linux 3.5.0 交叉编译器版本:arm-linux-gcc-4.4.3 这个版本的交叉编译器我已经上传到了资源上,可以随便下载,点此下载 安装前的絮叨 首先简单...

长平狐
2013/06/17
6.7K
4
内核编译 出错 arm-linux-gcc: not found

原因:在安装交叉编译器时没有写入环境变量找不到gcc编译器。或者是写入了环境变量却没有导入系统。 首先安装交叉编译器:forlinx的arm-linux-gcc.4.3.2.tgz拷贝到/usr/local/arm 在/usr/lo...

cicue
2013/12/04
150
0
浅析gcc、arm-linux-gcc和arm-elf-gcc的关系

浅析gcc、arm-linux-gcc和arm-elf-gcc的关系 嵌入式开发交流群280352802,欢迎加入! 一、GCC简介 The GNU Compiler Collection,通常简称 GCC,是一套由 GNU 开发的编译器集,为什么是编辑器...

长平狐
2013/06/03
1K
1
ARM 之 主流编译器(armcc、iar、gcc for arm)详细介绍

版权声明:进步始于交流,收获源于分享!转载请保留原文出处,谢谢! https://blog.csdn.net/ZCShouCSDN/article/details/89553323 比较 目前,针对于 ARM 平台的主流编译器主要有以下三者:...

ZCShoucsdn
04/27
0
0

没有更多内容

加载失败,请刷新页面

加载更多

手持式人证核验设备助力国家安全系统

手持式人证核验设备,是针对公共安全领域的移动化身份核验、追逃等需求推出的手持式一体化设备。其特点是具备人员信息采集、存储和比对功能,将采集到的人脸信息与居民身份证芯片中的人脸信息...

非思丸智能FaceTo
24分钟前
4
0
好程序员web前端教程分享JavaScript简写方法

今天好程序员web前端教程为大家分享JavaScript简写方法,小伙伴们快来看一看吧。 1.三元操作符 当想写if...else语句时,使用三元操作符来代替。 constx =20; let answer; if(x >10) { answer...

好程序员官网
28分钟前
5
0
PHP面试题2019年小米工程师面试题和答案解析

一、单选题(共29题,每题5分) 1.PHP面向对象方法重写描述错误的是? A、子类必须继承父类 B、子类可以重写父类已有方法 C、重写之后子类会调用父类方法 D、子类也可以具有与父类同名的属性...

一个PHP程序媛
31分钟前
4
0
K8s 从懵圈到熟练 – 镜像拉取这件小事

导读:相比 K8s 集群的其他功能,私有镜像的自动拉取,看起来可能是比较简单的。而镜像拉取失败,大多数情况下都和权限有关。所以,在处理相关问题的时候,我们往往会轻松的说:这问题很简单...

Mr_zebra
32分钟前
4
0
分布式锁简单入门以及实现方法

学过Java多线程的应该都知道什么是锁,没学过的也不用担心,Java中的锁可以简单的理解为多线程情况下访问临界资源的一种线程同步机制。 在学习或者使用Java的过程中进程会遇到各种各样的锁的...

yanlijun_java
35分钟前
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部