精华内容
下载资源
问答
  • 一、什么交叉编译 在一种计算机环境中运行的编译程序,能编译出在另外一种环境下运行的代码,我们就称这种编译器支持交叉编译。这个编译过程就叫交叉编译。简单地说,就是在一个平台上生成另一个平台上的可执行...

    一、什么是交叉编译

           在一种计算机环境中运行的编译程序,能编译出在另外一种环境下运行的代码,我们就称这种编译器支持交叉编译。这个编译过程就叫交叉编译。简单地说,就是在一个平台上生成另一个平台上的可执行代码。这里需要注意的是所谓平台,实际上包含两个概念:体系结构(Architecture)、操作系统(OperatingSystem)。同一个体系结构可以运行不同的操作系统;同样,同一个操作系统也可以在不同的体系结构上运行。举例来说,我们常说的x86 Linux平台实际上是Intel x86体系结构和Linux for x86操作系统的统称;而x86 WinNT平台实际上是Intel x86体系结构和Windows NT for x86操作系统的简称。

          交叉编译这个概念的出现和流行是和嵌入式系统的广泛发展同步的。我们常用的计算机软件,都需要通过编译的方式,把使用高级计算机语言编写的代码(比如C代码)编译(compile)成计算机可以识别和执行的二进制代码。比如,我们在Windows平台上,可使用Visual C++开发环境,编写程序并编译成可执行程序。这种方式下,我们使用PC平台上的Windows工具开发针对Windows本身的可执行程序,这种编译过程称为native compilation,中文可理解为本机编译。然而,在进行嵌入式系统的开发时,运行程序的目标平台通常具有有限的存储空间和运算能力,比如常见的ARM 平台,其一般的静态存储空间大概是16到32MB,而CPU的主频大概在100MHz到500MHz之间。这种情况下,在ARM平台上进行本机编译就不太可能了,这是因为一般的编译工具链(compilation tool chain)需要很大的存储空间,并需要很强的CPU运算能力。为了解决这个问题,交叉编译工具就应运而生了。通过交叉编译工具,我们就可以在CPU能力很强、存储控件足够的主机平台上(比如PC上)编译出针对其他平台的可执行程序。

          要进行交叉编译,我们需要在主机平台上安装对应的交叉编译工具链(crosscompilation tool chain),然后用这个交叉编译工具链编译我们的源代码,最终生成可在目标平台上运行的代码。常见的交叉编译例子如下:
     
    1、在Windows PC上,利用ADS(ARM 开发环境),使用armcc编译器,则可编译出针对ARM CPU的可执行代码。
     
    2、在Linux PC上,利用arm-linux-gcc编译器,可编译出针对Linux ARM平台的可执行代码。
     
    3、在Windows PC上,利用cygwin环境,运行arm-elf-gcc编译器,可编译出针对ARM CPU的可执行代码。

    二、为什么要使用交叉编译

    有时是因为目的平台上不允许或不能够安装我们所需要的编译器,而我们又需要这个编译器的某些特征;有时是因为目的平台上的资源贫乏,无法运行我们所需要编译器;有时又是因为目的平台还没有建立,连操作系统都没有,根本谈不上运行什么编译器。


    原文链接:http://blog.csdn.net/mars1743/article/details/20492285

    展开全文
  • 交叉编译为什么需要交叉编译

    千次阅读 2018-01-15 22:02:00
    本地编译 本地编译可以理解,在当前编译平台下,编译出来的程序只能放到当前平台下运行。平时我们常见的软件开发,都是属于...交叉编译可以理解,在当前编译平台下,编译出来的程序能运行在体系结构不同的另一种...

    本地编译

    本地编译可以理解为,在当前编译平台下,编译出来的程序只能放到当前平台下运行。平时我们常见的软件开发,都是属于本地编译:

    比如,我们在 x86 平台上,编写程序并编译成可执行程序。这种方式下,我们使用 x86 平台上的工具,开发针对 x86 平台本身的可执行程序,这个编译过程称为本地编译。

    交叉编译

    交叉编译可以理解为,在当前编译平台下,编译出来的程序能运行在体系结构不同的另一种目标平台上,但是编译平台本身却不能运行该程序:

    比如,我们在 x86 平台上,编写程序并编译成能运行在 ARM 平台的程序,编译得到的程序在 x86 平台上是不能运行的,必须放到 ARM 平台上才能运行。

    为什么会有交叉编译

    之所以要有交叉编译,主要原因是:

    • Speed: 目标平台的运行速度往往比主机慢得多,许多专用的嵌入式硬件被设计为低成本和低功耗,没有太高的性能
    • Capability: 整个编译过程是非常消耗资源的,嵌入式系统往往没有足够的内存或磁盘空间
    • Availability: 即使目标平台资源很充足,可以本地编译,但是第一个在目标平台上运行的本地编译器总需要通过交叉编译获得
    • Flexibility: 一个完整的Linux编译环境需要很多支持包,交叉编译使我们不需要花时间将各种支持包移植到目标板上
    展开全文
  • 一、什么交叉编译  在一种计算机环境中运行的编译程序,能编译出在另外一种环境下运行的代码,我们就称这种编译器支持交叉编译。这个编译过程就叫交叉编译。简单地说,就是在一个平台上生成另一个平台上的可...

    一、什么是交叉编译

           在一种计算机环境中运行的编译程序,能编译出在另外一种环境下运行的代码,我们就称这种编译器支持交叉编译。这个编译过程就叫交叉编译。简单地说,就是在一个平台上生成另一个平台上的可执行代码。这里需要注意的是所谓平台,实际上包含两个概念:体系结构(Architecture)、操作系统(OperatingSystem)。同一个体系结构可以运行不同的操作系统;同样,同一个操作系统也可以在不同的体系结构上运行。举例来说,我们常说的x86 Linux平台实际上是Intel x86体系结构和Linux for x86操作系统的统称;而x86 WinNT平台实际上是Intel x86体系结构和Windows NT for x86操作系统的简称。

          交叉编译这个概念的出现和流行是和嵌入式系统的广泛发展同步的。我们常用的计算机软件,都需要通过编译的方式,把使用高级计算机语言编写的代码(比如C代码)编译(compile)成计算机可以识别和执行的二进制代码。比如,我们在Windows平台上,可使用Visual C++开发环境,编写程序并编译成可执行程序。这种方式下,我们使用PC平台上的Windows工具开发针对Windows本身的可执行程序,这种编译过程称为native compilation,中文可理解为本机编译。然而,在进行嵌入式系统的开发时,运行程序的目标平台通常具有有限的存储空间和运算能力,比如常见的ARM 平台,其一般的静态存储空间大概是16到32MB,而CPU的主频大概在100MHz到500MHz之间。这种情况下,在ARM平台上进行本机编译就不太可能了,这是因为一般的编译工具链(compilation tool chain)需要很大的存储空间,并需要很强的CPU运算能力。为了解决这个问题,交叉编译工具就应运而生了。通过交叉编译工具,我们就可以在CPU能力很强、存储控件足够的主机平台上(比如PC上)编译出针对其他平台的可执行程序。

          要进行交叉编译,我们需要在主机平台上安装对应的交叉编译工具链(crosscompilation tool chain),然后用这个交叉编译工具链编译我们的源代码,最终生成可在目标平台上运行的代码。常见的交叉编译例子如下:
     
    1、在Windows PC上,利用ADS(ARM 开发环境),使用armcc编译器,则可编译出针对ARM CPU的可执行代码。
     
    2、在Linux PC上,利用arm-linux-gcc编译器,可编译出针对Linux ARM平台的可执行代码。
     
    3、在Windows PC上,利用cygwin环境,运行arm-elf-gcc编译器,可编译出针对ARM CPU的可执行代码。

    二、为什么要使用交叉编译

    有时是因为目的平台上不允许或不能够安装我们所需要的编译器,而我们又需要这个编译器的某些特征;有时是因为目的平台上的资源贫乏,无法运行我们所需要编译器;有时又是因为目的平台还没有建立,连操作系统都没有,根本谈不上运行什么编译器。
    展开全文
  • 在一种计算机环境中运行的编译程序,能编译出在另外一种环境下运行的代码,我们就称这种编译器支持交叉编译。这个编译过程就叫交叉编译。 简单地说, 就是在一个平台上生成另一个平台上的可执行代码。这里需要注意...

     在一种计算机环境中运行的编译程序,能编译出在另外一种环境下运行的代码,我们就称这种编译器支持交叉编译。这个编译过程就叫交叉编译。 简单地说, 就是在一个平台上生成另一个平台上的可执行代码。这里需要注意的是所谓平台,实际上包含两个概念:体系结构(Architecture)、操作系统 (Operating System)。同一个体系结构可以运行不同的操作系统;同样,同一个操作系统也可以在不同的体系结构上运行。举例来说,我们常说的x86 Linux平台实际上是Intel x86体系结构和Linux for x86操作系统的统称;而x86 WinNT平台实际上是Intel x86体系结构和Windows NT for x86操作系统的简称。

        有时是因为目的平台上不允许或不能够安装我们所需要的编译器,而我们又需要这个编译器的某些特征;有时是因为目的平台上的资源贫乏,无法运行我们所 需要编译器;有时又是因为目的平台还没有建立,连操作系统都没有,根本谈不上运行什么编译器。

        交叉编译这个概念的出现和流行是和嵌入式系统的广泛发展同步的。我们常用的计算机软件,都需要通过编译的方式,把使用高级计算机语言编写的代码(比 如C代码)编译(compile)成计算机可以识别和执行的二进制代码。比如,我们在Windows平台上,可使用Visual C++开发环境,编写程序并编译成可执行程序。这种方式下,我们使用PC平台上的Windows工具开发针对Windows本身的可执行程序,这种编译过 程称为native compilation,中文可理解为本机编译。然而,在进行嵌入式系统的开发时,运行程序的目标平台通常具有有限的存储空间和运算能力,比如常见的 ARM 平台,其一般的静态存储空间大概是16到32MB,而CPU的主频大概在100MHz到500MHz之间。这种情况下,在ARM平台上进行本机编译就不太 可能了,这是因为一般的编译工具链(compilation tool chain)需要很大的存储空间,并需要很强的CPU运算能力。为了解决这个问题,交叉编译工具就应运而生了。通过交叉编译工具,我们就可以在CPU能力 很强、存储控件足够的主机平台上(比如PC上)编译出针对其他平台的可执行程序。

        要进行交叉编译,我们需要在主机平台上安装对应的交叉编译工具链(cross compilation tool chain),然后用这个交叉编译工具链编译我们的源代码,最终生成可在目标平台上运行的代码。常见的交叉编译例子如下:

    1、在Windows PC上,利用ADS(ARM 开发环境),使用armcc编译器,则可编译出针对ARM CPU的可执行代码。

    2、在Linux PC上,利用arm-linux-gcc编译器,可编译出针对Linux ARM平台的可执行代码。

    3、在Windows PC上,利用cygwin环境,运行arm-elf-gcc编译器,可编译出针对ARM CPU的可执行代码。

     

          一个经常会被问到的问题就是,“既然我们已经有了主机编译器,那为什么还要交叉编译呢?”其实答案很简单,没办法啊!有时是因为目的平台上不允许或不能够 安装我们所需要的编译器,而我们又需要这个编译器的某些特征;有时是因为目的平台上的资源贫乏,无法运行我们所需要编译器;有时又是因为目的平台还没有建 立,连操作系统都没有,根本谈不上运行什么编译器。

      另一个经常会被问到的问题就是:“既然可以交叉编译,那还要主机编译干吗?”其实答案也很简 单,交叉编译是不得已而为之!与主机编译相比,交叉编译受的限制更多,虽然在理论上我们可以做任何形式的交叉编译,但事实上,由于受到专利、版权、技术的 限制,并不总是能够进行交叉编译,尤其是在业余条件下!举例来说,我们至今无法生成惠普公司专有的som格式的可执行文件,因此我们根本无法做目的平台为 HPPA-HPUX的交叉编译。

    展开全文
  • 在一种计算机环境中运行的编译程序,能编译出在另外一种环境下运行的代码,我们就称这种编译器支持交叉编译。这个编译过程就叫交叉编译。 简单地说,就是在一个平台上生成另一个平台上的可执行代码。这里需要注意的...
  • 交叉编译

    2020-09-16 20:35:39
    既然我们已经有了主机编译器,那为什么还要交叉编译呢? 有时是因为目的平台上不允许或不能够安装我们所需要的编译器,而我们又需要这个编译器的某些特征。 有时是因为目的平台上的资源贫乏,无法运行我们所需要...
  • 文档包含完整的例子,交叉编译还提供了下载链接,保证有用,不成功可留言 centos7下进行aarch64(arm64)交叉编译工具安装 iperf3交叉编译并在Android下运行 iperf3带宽TCP、UDP性能...怎么5分变6分了,不知道为什么
  • 什么交叉编译

    千次阅读 多人点赞 2017-06-30 09:21:17
    对于没有做过嵌入式编程的人,可能不太理解交叉编译的概念,那么什么交叉编译?它有什么作用? 在解释什么交叉编译之前,先要明白什么是本地编译。 本地编译 本地编译可以理解,在当前编译平台下,编译出来...
  • arm交叉编译perl,arm交叉编译openssl,arm交叉编译poco 编译Perl 下载Perl https://www.perl.org/get.html,直接下载Unix版本的源码,不要通过wget下载 下载好后打开目录 tar -xzf perl-5.26.2.tar.gz cd ...
  • #include的作用可以引起交叉编译为什么,什么是交叉编译
  • arm交叉编译

    千次阅读 2017-12-04 18:49:14
    arm交叉编译
  • 交叉编译学习笔记(一)——交叉编译和交叉工具链
  • 从零搭建交叉编译
  • nginx交叉编译

    千次阅读 2019-04-23 20:20:32
    nginx开源代码的交叉编译 交叉编译Hi3536上面使用的nginx 交叉编译 nginx ,基于mipsel平台 交叉编译 nginx nginx1.6.3交叉编译成功的代码 nginx 交叉编译 ( 上 ) nginx 交叉编译 (下) 下载 nginx: download zlib ...
  • 1、什么交叉编译 1.1 本地编译  解释什么交叉编译之前,先要明白一个概念:本地编译  我们之前常见的软件开发,都是属于本地编译:在当前的PC下,x86的CPU下,直接编译出来程序,可以运行的程序(或者库文件)...
  • arm交叉编译详解

    万次阅读 2016-11-03 14:38:35
    转载自 交叉编译详解–版本:v1.3.0, 有修改 CSDN GitHub arm交叉编译详解 ...本文主要介绍了什么交叉编译,为何要有交叉编译;解释了什么是工具链,什么是交叉工具链;详解解释了交叉编译器的名
  • libyuv交叉编译

    千次阅读 2018-12-20 23:56:54
    进入linux.mk中设置交叉编译工具,修改其中的第四行CC ,第八行CXX? 指定交叉编译工具链路径 或者直接修改 $(CC) $(CXX)指定的交叉编译链. 设置完成后我们使用make V=1 -f linux.mk 进行编...
  • 由于Qt程序依赖的底层以及第三方的相关库太多(比如libGL.so库OpenGL库,libX11.so库系统图像库等等),因此在交叉编译时会出现各种问题,下面将其主要的问题归如下三类: 1. 编译器所依赖的库,在编译链接...
  • 交叉编译iperf

    2019-05-15 12:07:54
    项目需要在嵌入式设备与linux虚拟机之前测试丢包率。 iperf3源码包 ... 交叉编译iperf ... 交叉编译工具君正平台mips-linux-gnu ./configure --host=mips-linux-gnu CXX=mips-linux-gnu-g++ CC=m...
  • iOS 交叉编译

    千次阅读 2018-10-10 10:11:21
    1、区别本地编译与交叉编译 本地编译:在当前编译平台下编译出来的程序只能在当前平台下运行。比如,我们在 x86 平台上,编写程序并编译成可执行程序。这种方式下,我们使用 x86 平台上的工具,开发针对 x86 平台...
  • 如何嵌入式开发建立交叉编译环境,教你嵌入式开发建立交叉编译环境。
  • poppler交叉编译

    千次阅读 2018-07-30 16:54:53
      公司某嵌入式设备使用Qt5.5开发,需要有...通过比较觉得poppler比较适合,下面是交叉编译的过程。 环境 硬件环境:iMX6 交叉编译工具链:arm-poky-linux-gnueabi gcc版本 4.6.2 软件环境:Linux+Qt5.5.1...
  • 本文能够避免交叉编译的时出现ZLIB extension requires zlib >=1.09 交叉编译libxml2和zlib,扩展arm-Linux-gcc的lib库。其中libxml2是PHP5安装必须的库文件 1.首先交叉编译zlib。 CC=arm-linux-gcc ./...
  • 交叉编译CUPS

    千次阅读 2013-11-09 16:35:48
    最近研究下如何交叉编译 CUPS,期间碰到很多编译上的问题,google一下,也没有见到详细的关于交叉编译cups的文档。自己根据网上的一些帖子,一点一点的研究编译中出 现的问题,今天终于完成了。这里就说下交叉编译...
  • ffmpeg交叉编译配置

    2017-09-27 23:07:16
    ffmpeg交叉编译配置,具体的配置,路径选择,交叉编译后,便于opencv的交叉编译

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 95,235
精华内容 38,094
关键字:

交叉编译为什么