转:http://blog.csdn.net/nokiaguy/article/details/8509739

X86架构的CPU采用的是复杂指令集(Complex Instruction Set Computer,CICS),而ARM架构的CPU使用的是精简指令集(Reduced Instruction Set Computer,RISC)。由于这两种架构的CPU使用了不同的指令集,因此在X86架构上开发可运行在ARM架构上的程序就必须要使用交叉编译器。 通常交叉编译器和相关工具包含的了很多可执行文件以及大量的共享库及头文件等资源。这些资源的集合称为交叉编译环境。

在Internet上可以找到集成好的交叉编译环境,Android NDK和Android源代码中也包含的交叉编译环境。当然,如果我们需要一个完全独立的交叉编译环境,可以下载集成好的交叉编译环境,也可以自己制作 (比较复杂,建议读者下载集成好的交叉编译环境)。下面介绍一个CodeSourcery交叉编译环境,这个交叉编译环境直接下载安装就可以安装。

读者可通过如下的网站访问CodeSourcery下载页面。

http://www.mentor.com/embedded-software/sourcery-tools/sourcery-codebench/editions/lite-edition/

上面的页面并未直接提供CodeSourcery的下载链接,读者可以点击“Download the GNU/Linux Release”链接,并输入Email(建议使用Gmail)、地址等信息,最后点击“Get Lite!”按钮提交信息。如图2-29所示。最后系统会将下载地址发送到刚才输入的Email。

进入下载页面,会看到如图2-30所示的不同版本的下载链接,选择最新的版本即可。

图2-30  CodeSourcery的不同版本

进入CodeSourcery的下载页面后,会看到如图2-31所示的下载链接。目前CodeSourcery有Windows和Linux两个版本。本书使用的是第1个(IA32 GNU/Linux Installer)。

Linux版本的安装文件是bin格式,读者可执行下面的命令安装CodeSourcery。其中package表示CodeSourcery的安装文件名。

sh package.bin

执行上面的命令后,会显示可视化的安装界面,如图2-32所示,读者可按提示安装CodeSourcery。

为了使用方便,建议读者将如下路径加到PATH环境变量中。

   /root/compilers/CodeSourcery/Sourcery_CodeBench_Lite_for_ARM_GNU_Linux/bin
    安装信息:

Product Name:     Sourcery CodeBench Lite for ARM GNU/Linux
   Install Folder:   /home/liulipeng/CodeSourcery/Sourcery_CodeBench_Lite_for_ARM_GNU_Linux
   Link Folder:      /home/liulipeng/Sourcery_CodeBench_Lite_for_ARM_GNU_Linux
   Disk Space Information (for Installation Target):      Required: 387,119,237 bytes     Available: 435,517,399,040 bytes

下面编写一个简单的C程序来测试一下这个交叉编译环境。

  1. //first.c
  2. #include <stdio.h>
  3. int main()
  4. {
  5. printf("first arm program\n");
  6. return 0;
  7. }

输入下面的命令编译first.c文件(需要加-static选项)。

# arm-none-linux-gnueabi-gcc -static -o first first.c

输入下面的命令将first文件上传到任意的Android设备的/data/local目录中(没有root权限也可以)。

# adb push first /data/local

使用adb shell命令进入Android设备的控制台,并进入/data/local目录,执行如下的命令

# ./first

执行上面的命令就会输出“first arm program”信息。first程序在X86架构上运行的Ubuntu Linux中是无法运行的。读者可以试着在Ubuntu Linux中运行first程序,看看会发生什么。


意:在安装Code Sourcery的过程中会在/lib目录寻找一个libc.so.6库文件,但在Ubuntu
Linux11.04及以上版本/lib目录已经没有libc.so.6库文件了。这个库文件被放在了其他的目录。在32位的Ubuntu
Linux中该文件的路径是/lib/i386-linux-gnu/libc.so.6,在64位的Ubuntu
Linux中该文件的路径是/lib/x86_64-linux-gnu/libc.so.6。在安装Code
Sourcery之前可以使用ln命令为libc.so.6文件在/lib目录建立一个链接。

安装C/C++交叉编译环境的更多相关文章

  1. Ubuntu 16.04 安装 arm-linux-gcc 嵌入式交叉编译环境 问题汇总

    闲扯: 实习了将近半年一直在做硬件以及底层的驱动,最近要找工作了发现了对linux普遍要求很高,而且工作岗位也非常多,所以最近一些时间在时不时地接触linux. 正文:(我一时兴起开始写博客,准备不充 ...

  2. ubuntu QT安装以及配置交叉编译环境

    我的环境:ubuntu14.04  64位 1.下载Qt: 上网搜索 qt-opensource-linux-x64-5.3.0.run下载有好多百度云盘 要么在官网下载追新版本http://down ...

  3. codeSourcery交叉编译环境

    arm-none-Linux-gnueabi-gcc是 Codesourcery 公司(目前已经被Mentor收购)基于GCC推出的的ARM交叉编译工具.可用于交叉编译ARM系统中所有环节的代码,包括 ...

  4. arm汇编--ubuntu12.04 安装arm-linux交叉编译环境

    1. 安装标准的C开发环境,由于Ubuntu安装默认是不安装的,所以需要先安装一下:sudo apt-get install gcc g++ libgcc1 libg++ make gdb 2.从ft ...

  5. PC机安装Qt以及QT交叉编译环境 分类: OpenCV ZedBoard shell ubuntu Eye_Detection 2014-11-08 18:57 246人阅读 评论(0) 收藏

    PC: apt-get install qtcreator Qt Embedded for ZedBoard: 下载qt-everywhere-opensource-src-4.7.3.tar.gz, ...

  6. MinGW32和64位交叉编译环境的安装和使用

    原文出处: CompileGraphics Magick, Boost, Botan and QT with MinGW64 under Windows 7 64 http://www.kinetic ...

  7. (笔记)Ubuntu下安装arm-linux-gcc-4.4.3.tar.gz (交叉编译环境)

    参考了前人的成果,结合自己实践,arm-linux-gcc-4.4.3.tar.gz的下载地址为:http://ishare.iask.sina.com.cn/f/13836544.html?from ...

  8. Linux 14.04lts 环境下搭建交叉编译环境arm-linux-gcc-4.5.1

    交叉编译工具链是为了编译.链接.处理和调试跨平台体系结构的程序代码,在该环境下编译出嵌入式Linux系统所需要的操作系统.应用程序等,然后再上传到目标板上. 首 先要明确gcc 和arm-linux- ...

  9. Windows7 64位系统搭建Cocos2d-x-2.2.1最新版以及Android交叉编译环境(详细教程)

    Windows7 64位系统搭建Cocos2d-x-2.2.1最新版以及Android交叉编译环境(详细教程) 声明:本教程在参考了以下博文,并经过自己的摸索后实际操作得出,本教程系本人原创,由于升级 ...

随机推荐

  1. std::string begin end

    std::string 的begin到end是不包含 ‘\0’的

  2. Java获取函数参数名称

    原理 编译之后的class文件默认是不带有参数名称信息的,使用 IDE 时,反编译jar包得到的源代码函数参数名称是 arg0,arg1......这种形式,这是因为编译 jar 包的时候没有把符号表 ...

  3. 原创工具binlog2sql:从MySQL binlog得到你要的SQL

    从MySQL binlog得到你要的SQL.根据不同设置,你可以得到原始SQL.回滚SQL.去除主键的INSERT SQL等. 用途 数据回滚 主从切换后数据不一致的修复 从binlog生成标准SQL ...

  4. VBS调用OUTLOOK发送邮件,windows计划任务定时拉起VBS调用OUTLOOK发送邮件

    OUTLOOK有延迟传递功能,可延迟传递的发送邮件在功能设计时(mircosoft的support帮助页的解释)就是邮件发送时的时间而不是邮件发送成功后的时间.比如早上10点发一封11点后的延迟传递邮 ...

  5. 【MongoDB】MongoDB的java驱动包使用

    要在Java中使用Mongo数据库 首先导入驱动包mongo-java-driver.jar. 然后获得库,获得集合.就可以对数据库操作了,比如: //创建MongoClient对象 MongoCli ...

  6. Java/Android倒计时(开始,暂停,恢复,停止)

    由于要做暂停和恢复,这里我就没有使用Android的CountDownTimer,而是用了Java的Timer.所以,这个方法在java肯定是通用.我也外加了Android独有的Service,有些计 ...

  7. 如何调试makefile变量

    六.七年前写过一篇<跟我一起写Makefile>,直到今天,还有一些朋友问我一些Makefile的问题,老实说,我有一段时间没有用Makefile了,生疏了.回顾,这几年来大家问题我的问题 ...

  8. 使用GDI+进行图片处理时要注意的问题

    原文链接: http://blog.csdn.net/chenlycly/article/details/24112955 与GDI相比,GDI+要强大很多.对于Windows应用程序来说,用GDI是 ...

  9. Python3 命令行参数

    Python 提供了 getopt 模块来获取命令行参数. $ python test.py arg1 arg2 arg3 Python 中也可以所用 sys 的 sys.argv 来获取命令行参数: ...

  10. debian 8 解压安装mysql(版本5.7.19)

    debian 8 解压安装mysql(版本5.7.19)一.下载 根据目标主机的型号官网下载mysql安装包如: mysql-server_5.7.19-1debian8_amd64.deb-bund ...