精华内容
下载资源
问答
  • 本地编译和交叉编译的区别

    千次阅读 2018-07-03 14:30:30
    2018-07-03 创建人:Ruo_Xiao ... 本地编译:在当前编译平台下编译出来程序只能在当前...交叉编译:在当前编译平台下,编译出来程序能运行在体系结构不同另一种目标平台上,但是编译平台本身却不能运行该程序。 ...
    2018-07-03  创建人:Ruo_Xiao
    邮箱:xclsoftware@163.com
    
    1. 本地编译:在当前编译平台下编译出来的程序只能在当前平台下运行。
    2. 交叉编译:在当前编译平台下,编译出来的程序能运行在体系结构不同的另一种目标平台上,但是编译平台本身却不能运行该程序。

    (SAW:Game Over!)

    展开全文
  • 交叉编译工具链是为了编译、链接、处理调试跨平台体系结构程序代码。对于交叉开发工具链来说,在文件名称上加了一个前缀,用来区别本地的工具链。例如,arm-linux-表示是对arm的交叉编译工具链;arm-linux-gcc...

    所谓的搭建交叉编译环境,即安装、配置交叉编译工具链。在该环境下编译出嵌入式Linux系统所需的操作系统、应用程序等,然后再上传到目标机上。

    交叉编译工具链是为了编译、链接、处理和调试跨平台体系结构的程序代码。对于交叉开发的工具链来说,在文件名称上加了一个前缀,用来区别本地的工具链。例如,arm-linux-表示是对arm的交叉编译工具链;arm-linux-gcc表示是使用gcc的编译器。除了体系结构相关的编译选项以外,其使用方法与Linux主机上的gcc相同,所以Linux编程技术对于嵌入式同样适用。不过,并不是任何一个版本拿来都能用,各种软件包往往存在版本匹配问题。例如,编译内核时需要使用arm-linux-gcc-4.3.3版本的交叉编译工具链,而使用arm-linux-gcc-3.4.1的交叉编译工具链,则会导致编译失败。

    那么gcc和arm-linux-gcc的区别是什么呢?区别就是gcc是linux下的C语言编译器,编译出来的程序在本地执行,而arm-linux-gcc用来在linux下跨平台的C语言编译器,编译出来的程序在目标机(如ARM平台)上执行,嵌入式开发应使用嵌入式交叉编译工具链。

    嵌入式交叉编译环境的搭建过程图文解说

    工具/原料

    电脑系统:win7系统。虚拟机系统:workstation6.5 。虚拟机安装的linux版本:fedora9.0。内核:linux2.6.25。

    方法/步骤1我使用的交叉编译工具链是arm-linux-gcc-4.4.3,把它放在linux系统的路径是图一

    嵌入式交叉编译环境的搭建过程图文解说2如图一所示,在linux系统的路径/home/song/share下放了交叉编译工具链arm-linux-gcc-4.4.3的压缩包,另一个版本的不用。有的人可能会问到怎么把这个压缩包弄到虚拟机的linux的系统的,我是通过samba服务从主机复制到虚拟机的,这里的share文件夹就是我samba服务器的工作目录,多了不说,这不是重点。

    然后通过命令mkdir embedded 建立一个arm-linux-gcc的安装目录,如图二所示。当然安装路径和目录名称“embedded”可以依自己的喜好而定。

    嵌入式交叉编译环境的搭建过程图文解说3然后通过命令将share文件夹下的arm-linux-gcc-4.4.3.tar.gz复制到这里的embedded文件夹下,如图四所示。当然这里你也可以不进行这一步我这是为了方便以后管理,将arm-linux-gcc安装到embedded文件夹下,方便以后寻找。

    嵌入式交叉编译环境的搭建过程图文解说4然后使用tar命令:tar zxvf arm-gcc-4.4.3.tar.gz将embedded文件夹下的arm-linux-gcc-4.4.3.tar.gz解压缩安装到当前目录下 ,如图五所示。

    嵌入式交叉编译环境的搭建过程图文解说5执行完解压缩命令,就已经将交叉编译工具链arm-linux-gcc-4.4.3安装到linux系统上了,这里默认安装到了图六所示的路径上。

    嵌入式交叉编译环境的搭建过程图文解说6接下来配置系统环境变量,把交叉编译工具链的路径添加到环境变量PATH中去,这样就可以在任何目录下使用这些工具。记下图六中的安装路径,使用图七中的命令:vi/etc/profile 编辑profile文件,添加环境变量。

    嵌入式交叉编译环境的搭建过程图文解说7在profile中的位置处,添加图八所示的红线标注的一行,路径就是图六中的红线标注的路径后面加上/4.4.3/bin。

    嵌入式交叉编译环境的搭建过程图文解说8图八中的路径一定是你自己的安装路径,可以使用pwd命令查找一下那个bin目录的路径。添加完路径后,保存退出。接下来使用命令:source/etc/profile,是修改后的profile文件生效,如图九所示。

    嵌入式交叉编译环境的搭建过程图文解说9然后,使用命令:arm-linux-gcc -v查看当前交叉编译链工具的版本信息,如图九中的红线标注第③行所示。很明显从图九可以看到,如果不执行第②步,则查看版本信息不成功。

    然后验证交叉编译工具链是否安装成功并且可以使用,如图九所示,随便找一个目录编辑一个hello源代码。

    嵌入式交叉编译环境的搭建过程图文解说

    嵌入式交叉编译环境的搭建过程图文解说10编辑好hello.c文件后,保存退出。然后使用交叉编译器对hello.c进行编译,并生成可执行文件hello,如图11所示。

    嵌入式交叉编译环境的搭建过程图文解说11这里生成的hello文件并不能像gcc编译出来的文件那样直接使用“./hello”命令执行并显示内容, 如图12所示,因为它是一个二进制文件,只能下载到开发板上执行!

    嵌入式交叉编译环境的搭建过程图文解说12至此,搭建交叉编译环境步骤结束。

    展开全文
  • 嵌入式交叉编译环境搭建 1,嵌入式交叉编译环境搭建 ... 交叉编译工具链是为了编译、链接、处理调试跨平台体系结构程序代码。对于交叉开发工具链来说,在文件名称上加了一个前缀,用来区别本地...

    1,嵌入式交叉编译环境搭建

    所谓的搭建交叉编译环境,即安装、配置交叉编译工具链。在该环境下编译出嵌入式Linux系统所需的操作系统、应用程序等,然后再上传到目标机上。
    
       交叉编译工具链是为了编译、链接、处理和调试跨平台体系结构的程序代码。对于交叉开发的工具链来说,在文件名称上加了一个前缀,用来区别本地的工具链。例如,arm-linux-表示是对arm的交叉编译工具链;arm-linux-gcc表示是使用gcc的编译器。除了体系结构相关的编译选项以外,其使用方法与Linux主机上的gcc相同,所以Linux编程技术对于嵌入式同样适用。不过,并不是任何一个版本拿来都能用,各种软件包往往存在版本匹配问题。例如,编译内核时需要使用arm-linux-gcc-4.3.3版本的交叉编译工具链,而使用arm-linux-gcc-3.4.1的交叉编译工具链,则会导致编译失败。
    
       那么gcc和arm-linux-gcc的区别是什么呢?区别就是gcc是linux下的C语言编译器,编译出来的程序在本地执行,而arm-linux-gcc用来在linux下跨平台的C语言编译器,编译出来的程序在目标机(如ARM平台)上执行,嵌入式开发应使用嵌入式交叉编译工具链。
    嵌入式交叉编译环境的搭建过程图文解说
    工具/原料
    
        电脑系统:win7系统。虚拟机系统:workstation6.5 。虚拟机安装的linux版本:fedora9.0。内核:linux2.6.25 。
    
    方法/步骤
    
        1
    
        我使用的交叉编译工具链是arm-linux-gcc-4.4.3,把它放在linux系统的路径是图一
        嵌入式交叉编译环境的搭建过程图文解说
        2
    
         如图一所示,在linux系统的路径/home/song/share下放了交叉编译工具链arm-linux-gcc-4.4.3的压缩包,另一个版本的不用。有的人可能会问到怎么把这个压缩包弄到虚拟机的linux的系统的,我是通过samba服务从主机复制到虚拟机的,这里的share文件夹就是我samba服务器的工作目录,多了不说,这不是重点。
    
           然后通过命令mkdir embedded 建立一个arm-linux-gcc的安装目录,如图二所示。当然安装路径和目录名称“embedded”可以依自己的喜好而定。
        嵌入式交叉编译环境的搭建过程图文解说
        3
    
          然后通过命令将share文件夹下的arm-linux-gcc-4.4.3.tar.gz复制到这里的embedded文件夹下,如图四所示。当然这里你也可以不进行这一步我这是为了方便以后管理,将arm-linux-gcc安装到embedded文件夹下,方便以后寻找。
        嵌入式交叉编译环境的搭建过程图文解说
        4
    
           然后使用tar命令:tar zxvf arm-gcc-4.4.3.tar.gz将embedded文件夹下的arm-linux-gcc-4.4.3.tar.gz解压缩安装到当前目录下 ,如图五所示。
        嵌入式交叉编译环境的搭建过程图文解说
        5
    
           执行完解压缩命令,就已经将交叉编译工具链arm-linux-gcc-4.4.3安装到linux系统上了,这里默认安装到了图六所示的路径上。
        嵌入式交叉编译环境的搭建过程图文解说
        6
    
            接下来配置系统环境变量,把交叉编译工具链的路径添加到环境变量PATH中去,这样就可以在任何目录下使用这些工具。记下图六中的安装路径,使用图七中的命令:vi /etc/profile 编辑profile文件,添加环境变量。
        嵌入式交叉编译环境的搭建过程图文解说
        7
    
          在profile中的位置处,添加图八所示的红线标注的一行,路径就是图六中的红线标注的路径后面加上/4.4.3/bin。
        嵌入式交叉编译环境的搭建过程图文解说
        8
    
         图八中的路径一定是你自己的安装路径,可以使用pwd命令查找一下那个bin目录的路径。添加完路径后,保存退出。接下来使用命令:source /etc/profile,是修改后的profile文件生效,如图九所示。
        嵌入式交叉编译环境的搭建过程图文解说
        9
    
           然后,使用命令:arm-linux-gcc -v查看当前交叉编译链工具的版本信息,如图九中的红线标注第③行所示。很明显从图九可以看到,如果不执行第②步,则查看版本信息不成功。
    
           然后验证交叉编译工具链是否安装成功并且可以使用,如图九所示,随便找一个目录编辑一个hello源代码。
        嵌入式交叉编译环境的搭建过程图文解说
        嵌入式交叉编译环境的搭建过程图文解说
        10
    
           编辑好hello.c文件后,保存退出。然后使用交叉编译器对hello.c进行编译,并生成可执行文件hello,如图11所示。
        嵌入式交叉编译环境的搭建过程图文解说
        11
    
         这里生成的hello文件并不能像gcc编译出来的文件那样直接使用“./hello”命令执行并显示内容, 如图12所示,因为它是一个二进制文件,只能下载到开发板上执行!
        嵌入式交叉编译环境的搭建过程图文解说
        12
    
          至此,搭建交叉编译环境步骤结束。
    View Code

     

    posted on 2015-05-16 11:44 秦瑞It行程实录 阅读(...) 评论(...) 编辑 收藏

    转载于:https://www.cnblogs.com/ruiy/p/4507597.html

    展开全文
  • 交叉编译工具链是为了编译、链接、处理调试跨平台体系结构程序代码。对于交叉开发工具链来说,在文件名称上加了一个前缀,用来区别本地的工具链。例如,arm-linux-表示是对arm的交叉编译工具链;arm-linux-gcc...

    首先简单介绍一下,所谓的搭建交叉编译环境,即安装、配置交叉编译工具链。在该环境下编译出嵌入式Linux系统所需的操作系统、应用程序等,然后再上传到目标机上。

    交叉编译工具链是为了编译、链接、处理和调试跨平台体系结构的程序代码。对于交叉开发的工具链来说,在文件名称上加了一个前缀,用来区别本地的工具链。例如,arm-linux-表示是对arm的交叉编译工具链;arm-linux-gcc表示是使用gcc的编译器。除了体系结构相关的编译选项以外,其使用方法与Linux主机上的gcc相同,所以Linux编程技术对于嵌入式同样适用。不过,并不是任何一个版本拿来都能用,各种软件包往往存在版本匹配问题。例如,编译内核时需要使用arm-linux-gcc-4.3.3版本的交叉编译工具链,而使用arm-linux-gcc-3.4.1的交叉编译工具链,则会导致编译失败。

    那么gcc和arm-linux-gcc的区别是什么呢?区别就是gcc是linux下的C语言编译器,编译出来的程序在本地执行,而arm-linux-gcc用来在linux下跨平台的C语言编译器,编译出来的程序在目标机(如ARM平台)上执行,嵌入式开发应使用嵌入式交叉编译工具链。

    安装步骤

    1、将压缩包arm-linux-gcc-4.4.3.tar.gz存放在一个目录下,这个目录就是你等会解压缩的目录,以后这个目录就不能随便删掉了,我的存放路径是 /home/song/software,如下图,记住这个路径,等会还会用到。

    2、使用tar命令:tar zxvf arm-gcc-4.4.3.tar.gz将software文件夹下的arm-linux-gcc-4.4.3.tar.gz解压缩安装到当前目录下如下图

    通过下图可以看到解压成功了,并且解压后的文件存放在了/home/song/software/opt/FriendlyARM/toolschain/4.4.3文件夹下,如下图所示,这个存放路径可得记住,如下图

    3、接下来配置系统环境变量,把交叉编译工具链的路径添加到环境变量PATH中去,这样就可以在任何目录下使用这些工具。记下上一步中的安装路径,使用命令:vim /etc/profile 编辑profile文件,添加环境变量。

    在profile中最后一行添加: export PATH=$PATH:/home/song/software/opt/FriendlyARM/toolschain/4.4.3/bin 这个路径就是那个bin目录所在的路径,可能你的不一样,按照你实际的目录填就可以了,如下图32行

    编写完保存就好了

    4、使用命令:source /etc/profile 使环境变量生效

    5、在终端上输入命令 arm-linux 再按Tab键,可以看到下图,说明环境变量设置成功了

    6、使用命令:arm-linux-gcc -v 会出现下面的错误提示:/home/song/software/opt/FriendlyARM/toolschain/4.4.3/bin/arm-linux-gcc: 15: exec: /home/song/software/opt/FriendlyARM/toolschain/4.4.3/bin/.arm-none-linux-gnueabi-gcc: not found

    说是出现这种问题的原因是由于Ubuntu12.04用的是64位的,解决方法就是使用命令:sudo apt-get install ia32-libs 装一些32位的库

    7、待安装完32位的库之后,再使用命令:arm-linux-gcc -v,这一次就成功了,如下图

    8、验证,编译一个hello.c文件


    现在就可以使用交叉编译器了,写一个测试程序helloworld,交叉编译下,看是否能在开发板上运行。

              i. 交叉编译测试程序

    arm-linux-gcc helloworld.c -o helloworld

             ii.把生成的可执行文件helloworld复制到NFS的挂载目录下:

    sudo  cp ./helloworld   /nfsboot

    注意:本实验中开发板使用NFS挂载rootfs,nfsboot是NFS的挂载目录。

            iii.在超级终端上运行:

    ./helloworld

    执行结果:

    展开全文
  •  交叉编译工具链是为了编译、链接、处理调试跨平台体系结构程序代码。对于交叉开发工具链来说,在文件名称上加了一个前缀,用来区别本地的工具链。例如,arm-linux-表示是对arm的交叉编译工具链;arm-linux-...
  •  首先要明确gccarm-linux-gcc的区别,gcc是x86架构的C语言编译器,编译出来的程序在本地执行,而arm-linux-gcc是跨平台的C语言编译器,编译出来的程序在目标班上执行,嵌入式开发应该使用交叉编译工具链,
  • 后面我们交叉编译的程序都将放置在主机的”/usr/local/arm/”目录中,以区别主机本地的应用程序。 我的mimi2440的根文件系统是PC端VMWare上linux中的nfs,这样比较容易调试。具体位置是linux上的/work/roorfs,下文...
  • 交叉编译器安装方法

    千次阅读 2018-08-05 20:46:34
     交叉编译工具链是为了编译、链接、处理调试跨平台体系结构程序代码。对于交叉开发工具链来说,在文件名称上加了一个前缀,用来区别本地的工具链。例如,arm-linux-表示是对arm的交叉编译工具链;arm-linux-g...
  • 在说hosttarget的区别之前还是先讲一下build的...2、target是用于编译在服务器上本地执行的、但是为目标板程序交叉编译所用的工具,比如binutils, elfutils, gcc等交叉编译工具。这种情况一般很少用到。 3、host!
  • C语言的编译有两种方式,一种是本地编译(在一个平台上编译该平台运行的程序),另一种是交叉编译(在一个平台上编译供另一个平台运行的程序) 编译的功能 将高级语言转换为处理器能够执行的二进制代码。 对编程...
  • 交叉编译器

    千次阅读 2016-05-05 17:10:17
     交叉编译工具链是为了编译、链接、处理调试跨平台体系结构程序代码。对于交叉开发工具链来说,在文件名称上加了一个前缀,用来区别本地的工具链。例如,arm-linux-表示是对arm的交叉编译工具链;arm-linux-...
  • tmake and qmake 的区别 tmake qmake 都是用来生成makefile的,qmake用于本地编译。 例如:hello目录下有main.cpp hello.cpp hello.h cd hello qmake -project // 将生成hello.pro qmake hello.pro -o makefile /...
  • 在对Linux设备驱动进行编译的时候,可以使用本地编译交叉编译,本地编译和交叉编译区别在于是否使用交叉编译工具。 树莓派的官方系统不提供内核源码,也没有进行内核编译,在树莓派驱动开发过程中,如果不进行...
  • arm-linux-gcc

    2019-09-29 21:10:44
    交叉编译工具链是为了编译、链接、处理调试跨平台体系结构程序代码。对于交叉开发工具链来说,在文件名称上加了一个前缀,用来区别本地的工具链。例如,arm-linux-表示是对arm的交叉编译工具链,arm-linux-...
  • 在一个平台上生成仅可在另个平台上运行可执行代码→区别本地编译 为什么?(嵌入式硬件受限于成本) 运行速度:目标平台嵌入式硬件通常被设计为低成本低功耗,没有太高性能,运行速度较主机过慢。 ...
  • C#微软培训教材(高清PDF)

    千次下载 热门讨论 2009-07-30 08:51:17
    18.2 在 C #代码中调用 C++ VB 编写组件 .240 18.3 版 本 控 制 .249 18.4 代 码 优 化 .252 18.5 小 结 .254 第五部分 附 录 .255 附录 A 关 键 字.255 附录 B 错 误 码.256 附录 C .Net 名字空间...
  • C#微软培训资料

    2014-01-22 14:10:17
    18.2 在 C #代码中调用 C++ VB 编写组件 .240 18.3 版 本 控 制 .249 18.4 代 码 优 化 .252 18.5 小 结 .254 第五部分 附 录 .255 附录 A 关 键 字.255 附录 B 错 误 码.256 附录 C .Net 名字空间...
  • Reversing:逆向工程揭密

    热门讨论 2010-06-21 17:00:47
    12.6.5 预编译的汇编程序 453 12.6.6 加密的汇编程序 453 12.7 结论 455 第13章 反编译 457 13.1 本地代码的反编译:是一个 13.1 解决不了的问题吗? 457 13.2 典型的反编译器架构 459 13.3 中间表示 459 13.3.1 ...
  • 14.1.2 使用Access选项卡使用ActiveX TabStrip控件的区别 436 14.2 ImageList控件详述 438 14.2.1 在设计阶段添加图像 438 14.2.2 在运行阶段向ImageList控件中添加图像 441 14.3 用ListView控件仿效...
  • 黑马安卓52期视频教程

    热门讨论 2015-06-24 22:15:48
    04_JVMDVM的区别 05_下载SDK 06_SDK目录结构 07_模拟器的创建 08_创建部署Android项目 09_Android项目目录结构 10_清单文件 11_应用安装过程 12_DDMS的使用 13_adb进程&指令 14_电话拨号器 15_按钮的点击事件 16_...
  • 作者通过总结各自多年软件开发教学培训经验,与大家分享了掌握Oracle SQL所独有丰富功能技巧所在,内容涵盖SQL执行、联结、集合、分析函数、子句、事务处理等多个方面。读者可以学习到以下几个方面技巧:...
  • 作者通过总结各自多年软件开发教学培训经验,与大家分享了掌握Oracle SQL所独有丰富功能技巧所在,内容涵盖SQL执行、联结、集合、分析函数、子句、事务处理等多个方面。读者可以学习到以下几个方面技巧:...

空空如也

空空如也

1 2
收藏数 27
精华内容 10
关键字:

交叉编译和本地编译的区别