精华内容
下载资源
问答
  • 交叉编译的作用及过程
    2022-01-13 17:00:31

    交叉编译这个概念的出现和流行是和嵌入式系统的广泛发展同步的。

    我们常用的计算机软件,都需要通过编译的方式,把使用高级计算机语言编写的代码(比如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的可执行代码。
    更多相关内容
  • wsl2下交叉编译软件的安装、踩坑过程 以及拿vscode连接wsl2 代码写的是一个简单的C语言程序,每个0.60006秒输出一次hello wrold 参考了很多网上大家的做法,因此也把自己的踩坑过程放在网上,供大家参考。
  • 交叉编译基本过程

    2021-01-25 21:14:09
    编译脚本设置交叉编译用到的环境 该环境变量主要用于cmake编译时,通过获取环境变量的值来判断取链接哪些库等作用.因为环境变量是系统中进程共享的数据. 如: export CROSS_COMPILING_TYPE = "ARM_PLATFORM" 需要一个...

    编译脚本设置交叉编译用到的环境

    该环境变量主要用于cmake编译时,通过获取环境变量的值来判断取链接哪些库等作用.因为环境变量是系统中进程共享的数据.
    如:

    export CROSS_COMPILING_TYPE = "ARM_PLATFORM"
    

    需要一个ToolChain_xxx.make的文件

    该文件主要是对进行交叉编译时,所使用的交叉编译工具链的说明,所谓交叉编译工具链就是我们要生成目标平台的可执行文件或这库时用到的编译链接工具的集合.
    该文件中我们会定义很多变量,包括编译工具的路径,所用到的库的引用路径,所用到的头文件的包含路径等信息,cmake会交这些所有变量保存下来,在之后的CMakeLists.txt中就可以引用这些变量了.

    在这里简单的罗列几条,一般这个文件由sdk提供方提供:

    SET(CMAKE_CXX_COMPILER sdk_path_name/g++)
    ......
    SET(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
    SET(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
    SET(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
    

    指定使用的XXX.cmake文件

    cmake  -DCMAKE_TOOLCHAIN_FILE = PATH_OF_.XXX.cmake   cmake_path/
    

    根据之前设置的环境变量来设置宏,因为代码中肯定会由于不同平台有一些宏开关

    //编译时加-D选项
    ADD_DEFINITIONS("-DARM_CODE")
    

    然后根据环境变量的值判断当前编译的是哪个平台的代码,应当去链接什么库.例如:CMakeLists.txt中

    IF($ENV{CROSS_COMPILING_TYPE} MATCHES "ARM_PLATFORM")
        TARGET_LINK_LIBRARIES(...)
    ELSE()
        TARGET_LINK_LIBRARIES(...)
    ENDIF()
    

    写代码是对于不同平台实现时代码以及代码引用的头文件也不一样,所以我们一般用宏开关

    #ifdeine ARM_CODE
    #include <arm/a.h>
    #else
    #include <x86/a.h>
    #endif
    
    展开全文
  • 交叉编译详解

    千次阅读 多人点赞 2021-02-23 13:31:29
    第 1 章 交叉编译简介 1.1 什么是交叉编译 对于没有做过嵌入式编程的人,可能不太理解交叉编译的概念,那么什么是交叉编译?它有什么作用? 在解释什么是交叉编译之前,先要明白什么是本地编译。 本地编译 本地...

    第 1 章 交叉编译简介

    1.1 什么是交叉编译

    对于没有做过嵌入式编程的人,可能不太理解交叉编译的概念,那么什么是交叉编译?它有什么作用?

    在解释什么是交叉编译之前,先要明白什么是本地编译。

    本地编译

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

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

    交叉编译

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

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

    1.2 为什么会有交叉编译

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

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

    1.3 为什么交叉编译比较困难

    交叉编译的困难点在于两个方面:

    不同的体系架构拥有不同的机器特性

    • Word size: 是64位还是32位系统
    • Endianness: 是大端还是小端系统
    • Alignment: 是否必修按照4字节对齐方式进行访问
    • Default signedness: 默认数据类型是有符号还是无符号
    • NOMMU: 是否支持MMU

    交叉编译时的主机环境与目标环境不同

    • Configuration issues:
    • HOSTCC vs TARGETCC:
    • Toolchain Leaks:
    • Libraries:
    • Testing:

    详细的对比可以参看这篇文章,已经写的很详细了,在这就不细说了:Introduction to cross-compiling for Linux

    第 2 章 交叉编译链

    2.1 什么是交叉编译链

    明白了什么是交叉编译,那我们来看看什么是交叉编译链。

    首先编译过程是按照不同的子功能,依照先后顺序组成的一个复杂的流程,如下图:

    编译流程

    那么编译过程包括了预处理、编译、汇编、链接等功能。既然有不同的子功能,那每个子功能都是一个单独的工具来实现,它们合在一起形成了一个完整的工具集。

    同时编译过程又是一个有先后顺序的流程,它必然牵涉到工具的使用顺序,每个工具按照先后关系串联在一起,这就形成了一个链式结构。

    因此,交叉编译链就是为了编译跨平台体系结构的程序代码而形成的由多个子工具构成的一套完整的工具集。同时,它隐藏了预处理、编译、汇编、链接等细节,当我们指定了源文件(.c)时,它会自动按照编译流程调用不同的子工具,自动生成最终的二进制程序映像(.bin)。

    注意:严格意义上来说,交叉编译器,只是指交叉编译的gcc,但是实际上为了方便,我们常说的交叉编译器就是交叉工具链。本文对这两个概念不加以区分,都是指编译链

    2.2 交叉编译链的命名规则

    我们使用交叉编译链时,常常会看到这样的名字:

    arm-none-linux-gnueabi-gcc
    arm-cortex_a8-linux-gnueabi-gcc
    mips-malta-linux-gnu-gcc
    

    其中,对应的前缀为:

    arm-none-linux-gnueabi-
    arm-cortex_a8-linux-gnueabi-
    mips-malta-linux-gnu-
    

    这些交叉编译链的命名规则似乎是通用的,有一定的规则:

    arch-core-kernel-system
    
    • arch: 用于哪个目标平台。
    • core: 使用的是哪个CPU Core,如Cortex A8,但是这一组命名好像比较灵活,在其它厂家提供的交叉编译链中,有以厂家名称命名的,也有以开发板命名的,或者直接是none或cross的。
    • kernel: 所运行的OS,见过的有Linux,uclinux,bare(无OS)。
    • systen:交叉编译链所选择的库函数和目标映像的规范,如gnu,gnueabi等。其中gnu等价于glibc+oabi;gnueabi等价于glibc+eabi。

    注意:这个规则是一个猜测,并没有在哪份官方资料上看到过。而且有些编译链的命名确实没有按照这个规则,也不清楚这是不是历史原因造成的。如果有谁在资料上见到过此规则的详细描述,欢迎指出错误。

    第 3 章 包含的工具

    3.1 Binutils

    Binutils是GNU工具之一,它包括链接器、汇编器和其他用于目标文件和档案的工具,它是二进制代码的处理维护工具。

    Binutils工具包含的子程序如下:

    • ld GNU连接器the GNU linker.
    • as GNU汇编器the GNU assembler.
    • addr2line 把地址转换成文件名和所在的行数
    • ar A utility for creating, modifying and extracting from archives.
    • c++filt Filter to demangle encoded C++ symbols.
    • dlltool Creates files for building and using DLLs.
    • gold A new, faster, ELF only linker, still in beta test.
    • gprof Displays profiling information.
    • nlmconv Converts object code into an NLM.
    • nm Lists symbols from object files.
    • objcopy Copys and translates object files.
    • objdump Displays information from object files.
    • ranlib Generates an index to the contents of an archive.
    • readelf Displays information from any ELF format object file.
    • size Lists the section sizes of an object or archive file.
    • strings Lists printable strings from files.
    • strip Discards symbols

    binutils介绍

    3.2 GCC

    GNU编译器套件,支持C, C++, Java, Ada, Fortran, Objective-C等众多语言。

    3.3 GLibc

    Linux上通常使用的C函数库为glibc。glibc是linux系统中最底层的api,几乎其它任何运行库都会依赖于glibc。glibc除了封装linux操作系统所提供的系统服务外,它本身也提供了许多其它一些必要功能服务的实现。

    glibc 各个库作用介绍

    因为嵌入式环境的资源及其紧张,所以现在除了glibc外,还有uClibc和eglibc可以选择,三者的关系可以参见这两篇文章:

    uclibc eglibc glibc之间的区别和联系

    Glibc vs uClibc Differences

    3.4 GDB

    GDB用于调试程序

    第 4 章 如何得到交叉编译链

    既然明白了交叉编译链的功能,那么在针对嵌入式系统开发时,我们需要的交叉编译链从哪儿得到?

    主要有三个方式可以获取

    4.1 下载已经做好的交叉编译链

    使用其他人针对某些CPU平台已经编译好的交叉编译链。我们只需要找到合适的,下载下来使用即可。

    常见的交叉编译链下载地址:

    1. 在 http://ftp.arm.linux.org.uk/pub/armlinux/toolchain/ 下载已经编译好的交叉编译链
    2. 在 http://www.denx.de/en/Software/WebHome 下载已经编译好的交叉编译链
    3. https://launchpad.net/gcc-arm-embedded下载已经编译好的交叉编译链
    4. 一些制作交叉编译链的工具中,包含了已经制作好的交叉编译链,可以直接拿来使用。如crosstool-NG
    5. 如果购买了某个芯片或开发板,一般厂商会提供对应的整套开发软件,其中就包含了交叉编译链。

    厂家提供的工具一般是经过了严格的测试,并打入了一些必要的补丁,所以这种方式往往是最可靠的工具来源。

    4.2 使用工具定制交叉编译链

    使用现存的制作工具,以简化制作交叉编译链这个事情的复杂度。我们只需要了解有哪些工具可以实现,并选个合适的工具,搞懂它的操作步骤即可。

    1. crosstool-NG
    2. Buildroot
    3. Embedded Linux Development Kit (ELDK)

    工具还有很多,各有各的优势和劣势,大家可以慢慢研究,在这就不细说了。

    4.3 从零开始构建交叉编译链

    这个是最困难也最耗时间的,毕竟制作交叉编译链这样的事情,需要对嵌入式的编译原理了解的比较透彻,至少要知道出了问题要往哪个方面去翻阅资料。而且,也是最考耐心和细心的地方,配错一个选项或是一个步骤,都可能出现以前从来没见过的问题,而且这些问题往往还无法和这个选项或步骤直接联系起来。

    当然如果搭建出来,肯定也是收获最大的,至少对于编译的流程和依赖都比较清楚了,细节上的东西可能还需要去翻看相应的协议或标准,但至少骨架会比较清楚。

    详细的搭建过程可以参看后续的文章,这里面有详细的参数和步骤:
    交叉编译详解 二 从零制作交叉编译链

    为了方便大家搭建交叉编译链,我写了一个一键生成的脚本(包括源码下载和自动编译)。如果大家自己一直搭建不成功,不妨试试这个脚本,然后对比下自己的流程是否一致,参数是否有差异,也许能帮大家迈过这个障碍:
    交叉编译详解 三 使用脚本自动生成交叉编译链

    4.4 对比三种构建方式

    项目使用已有交叉编译链自己制作交叉编译链
    安装一般提供压缩包需要自己打包
    源码版本一般使用较老的稳定版本,对于一些新的GCC特性不支持可以使用自己需要的GCC特性的版本
    补丁一般都会打上修复补丁普通开发者很难辨别需要打上哪些补丁,资深开发者可以针对自己的需求合入补丁
    源码溯源可能不清楚源码版本和补丁情况一切都可以定制
    升级一般不会升级可以随时升级
    优化一般已经针对特定CPU特性和性能进行优化一般无法做到比厂家优化的更好,除非自己设计的CPU
    技术支持可以通过FAE进行支持,可能需要收费只能通过社区支持,免费
    可靠性验证已经通过了完善的验证自己验证,肯定没有专业人士验证的齐全

    参考资料

    [1] Introduction to cross-compiling for Linux

    [2] binutils介绍

    [3] glibc 各个库作用介绍

    [4] uclibc eglibc glibc之间的区别和联系

    [5] Glibc vs uClibc Differences

    [6] 交叉编译链下载地址

    展开全文
  • 交叉编译工具链的安装和配置过程

    千次阅读 2022-07-28 17:18:57
    介绍交叉编译工具链的安装和配置过程

    1. 编译工具链基本介绍

    C/C++程序需要编译成二进制的机器码才能被CPU识别运行,而编译程序就需要用到编译器,比如我们常用的gcc编译器。

    gcc编译器,其实只是编译工具链的其中一个工具而已,实际上整个编译工具链包含了:gcc(c编译器)、g++(c++编译器)、ar(ar打包工具,制作静态链接库)、as(汇编器)、ld(链接器)等等一系列的工具,所有的工具集合就被叫做交叉编译工具链。

    对于嵌入式开发来说,因为我们运行代码的平台并不是电脑,而是其他架构的SoC,比如ARM架构的芯片。但是我们开发过程却是在电脑上开发,所以我们需要的事交叉编译工具链。比如下面的一些交叉编译工具:
    在这里插入图片描述
    这些工具都有前缀字段,他们有通用的命名规则:arch - vendor - os - abi ,其中:

    arch:表示目标平台的CPU架构,比如上面写的就是ARM架构

    vendor:这个单词指的是供应商。一般这个字段可以标识工具链由那个芯片厂商制作的,或者这个工具链可以编译哪颗厂商的CPU。这个字段基本都是不写(比如上面的截图)、或者写为none,这样就表示可以适用ARM架构的所有CPU。

    os:这个字段表示目标平台运行的操作系统。常见的会写linux、none。一般来说none的工具链都是用于编译裸机程序的。写linux则编译的程序是运行与linux系统上,当然这个字段就算写着linux,也是可以编译裸机程序的。

    abi:就是Application Binary Interface(应用程序二进制接口)英文的缩写。这个字段常见的有:abi、eabi、gnu、gnueabi、uclibc等等。其中gnu是指使用glic库,eabi是指Embedded Application Binary Interface(即嵌入式应用程序二进制接口)。

    2. 获取交叉编译工具链

    1. 自己制作

      交叉编译工具链,我们可以使用 crosstool-NG 这类工具,自己制作。

    2. 在一些机构或者开源组织下载

      一般可以从这个网站上下载:https://www.linaro.org/downloads/

    3. SoC厂商或者开发板厂商提供

      通常芯片厂商或者开发板厂商都会提供该芯片的SDK,里面就包括了交叉编译工具链,在实际开发中,也是推荐使用SoC厂商提供的工具链,因为我们使用了不同版本的工具链,编译内核、应用程序可能会出现不兼容的问题。

    3. 安装交叉编译工具链

    对于眺望科技开发板提供的交叉编译工具链在 .\Core-A9核心板光盘资料\2.软件开发参考资料\1.编译工具 这个位置。下面以这个工具链为例进行安装。

    1. 现在linux下创建个文件夹用于存放交叉编译工具链。这里我在home目录下创建一个toolchain文件夹存放,我们在其他目录存放也是一样的。

      mkdir toolchain
      
    2. 把工具链弄进linux里面。把文件放到linux里面的方法有很多,可以参考这篇博文:https://blog.csdn.net/luobeihai/article/details/124003483 写的方法,非常详细。这里我就用 FileZilla 工具进行传输。如下:
      在这里插入图片描述

    3. 解压安装包

      tar -zxvf arm-poky-linux-gnueabi-gcc-5.3.0.tar.gz 
      

      解压完成后,在当前目录下多了一个目录,就是我们刚刚解压出来的。如下:
      在这里插入图片描述

    4. 安装完之后测试

      交叉编译工具链在解压完成之后,就相当于安装完成了的。安装完成之后的交叉编译工具链就在 ./fsl-imx-fb/4.1.15-2.0.1/sysroots/i686-pokysdk-linux/usr/bin/arm-poky-linux-gnueabi 这个目录下。我们进入到这个目录,可以看到里面有如下文件:
      在这里插入图片描述
      上面这些就是工具链的各种工具集合。

      我们运行工具链的下面命令,就会打印出版本等信息,这样就说明安装成功了。

      arm-linux-gnueabihf-gcc -v
      

      在这里插入图片描述

    4. 设置工具链的PATH环境变量

    当解压完成之后,实际上我们就可以运行这个工具链进行编译程序了,但是如果我们不在工具链的当前目录下运行工具链编译程序的话,linux系统就会报错说找不到这个程序。原因很简单,就是系统运行程序的查找路径不包括我们刚刚安装工具链的路径,所以我们需要把这个路径添加到PATH的环境变量中去。

    可以执行下面命令打印linux系统PATH环境变量:

    echo $PATH
    

    执行完后,打印出的环境变量如下:
    在这里插入图片描述
    可以看出,并没有我们安装的交叉编译工具链的路径。下面接收如何添加PATH环境变量。

    方法一:直接export导出PATH环境变量

    只要输入如下命令即可:

    export PATH=/home/twdz/toolchain/fsl-imx-fb/4.1.15-2.0.1/sysroots/i686-pokysdk-linux/usr/bin/arm-poky-linux-gnueabi:$PATH
    

    导出了环境变量之后,我们就可以在任何目录下运行工具链的编译命令了。

    但是注意这种方法,只对当前的终端有效,如果你关闭了这个终端在重新打开,就需要再次运行这个命令。

    方法二:修改 .bashrc 文件

    要想设置的环境变量永久生效,就在用户的宿主目录(就是各个用户的home目录)下,有一个 .bashrc 的隐藏文件,如下:

    在这里插入图片描述
    如果没有这个文件的话,自己创建这个文件即可。

    我们把上面的那句命令,添加到 .bashrc 文件的末尾即可。输入如下命令打开这个文件:

    vi .bashrc
    

    然后添加 export 的那句命令即可。如下:
    在这里插入图片描述
    这样子设置的交叉编译工具链的 PATH 环境变量就永久生效了。注意你设置的是哪个用户的 .bashrc 文件,则这个用户就是永久生效的。如果你切换了用户,那么就不起作用了。

    展开全文
  • Linux交叉编译FFmpeg

    千次阅读 2022-01-03 21:05:09
    在Android中使用编译好的FFmpeg,需要先了解一下C/C++编译基础概念,还需要准备一台Linux操作系统的机器。 编译流程 C/C++编译流程图如下: 静态库和动态库 本质上来说库是一种可执行代码的二进制形式,可以被操作...
  • 交叉编译

    千次阅读 2020-09-16 20:35:39
    交叉编译是在一个平台上生成另一个平台上的可执行代码(例如我们在windows上用keil编译代码生成hex文件,供51单片机使用,这个过程就是交叉编译。这是一个行为。)。 为什么要交叉编译 既然我们已经有了主机编译器,...
  • 交叉编译指令

    千次阅读 2022-02-02 16:28:29
    gcc交叉编译指令的一些选项含义: 样例: arm-linux-gnueabihf-gcc -Wall -nostdlib -c -O2 $(INCLUDE) -o $@ $< 总体选项: -c:预处理,编译和汇编源文件,但不做连接,编译器根据源文件生成OBJ文件 -S:编译后...
  • nginx交叉编译流程

    千次阅读 2021-05-16 15:48:03
    文章目录1、生成Makefile前修改点a) 修改 auto/cc/name 脚本,注释掉line21的exit 1b)修改 auto/types/sizeof 脚本(该点需要适当注意)2、依赖库的准备a) pcre-8.43的编译接入进行分析b)openssl-1.1.1d库的编译接入...
  • Ubuntu下源码编译OpenCV静态库使用(勾选WITH_QT)_jiugeshao的专栏-CSDN博客 在此基础上,博主继续做了多次尝试,终于解决了此问题。过程中也参考stack Overflow上的解决方法,然而并没有什么作用,其
  • 这个编译过程就叫交叉编译。简单地说,就是在一个平台上生成另一个平台上的可执行代码。这里需要注意的是所谓平台,实际上包含两个概念:体系结构(Architecture)、操作系统(OperatingSystem)。同一个体系结构...
  • CMake及交叉工具编译链的安装使用

    千次阅读 2021-12-05 20:28:07
    CMake及交叉编译工具链的安装使用 1. 原理 CMake是一种跨平台编译工具,比make更为高级,使用起来要方便得多。CMake主要是编写CMakeLists.txt文件,然后用cmake命令将CMakeLists.txt文件转化为make所需要的makefile...
  • go交叉编译

    2022-01-05 20:36:53
    交叉编译 交叉编译是用来在一个平台上生成另一个平台的可执行程序。比如我工作开发时用的Mac,系统内核是darwin,小张用的是外星人,系统内核是windows 。 那么假如我编写的代码依赖了系统底层平台或处理器架构特性...
  • RISC-V GNU Toolchain及交叉编译

    千次阅读 2022-01-22 21:36:37
    想要理解riscv gnu Toolchain的作用,首先要了解交叉编译的概念。我们平时常见的架构有Intel的X86架构、龙芯处理器的MIPS架构、苹果A系列处理器的ARM架构等。 交叉编译这个概念的出现和流行是和嵌入式系统的广泛...
  • 交叉编译工具链介绍

    千次阅读 2020-07-03 10:41:35
    什么是交叉编译 交叉编译可以理解为,在当前编译平台下,编译出来的程序能运行在体系结构不同的另一种目标平台上,但是编译平台本身却不能运行该程序。 比如,我们在 x86 平台上,编写程序并编译成能运行在 ARM ...
  • CMake交叉编译

    2018-08-20 17:38:44
    CMake的使用,以及如何将一个项目移植到...以linux平台为例,使用 CMake 生成 Makefile 并编译的流程如下: 编写 CMake 配置文件 CMakeLists.txt 。 执行命令 cmake Path-to-Cmakelist/CMakeLists.txt 生成 Makefi...
  • 这个编译过程就叫交叉编译。简单地说,就是在一个平台上生成另一个平台上的可执行代码。这里需要注意的是所谓平台,实际上包含两个概念:体系结构(Architecture)、操作系统(OperatingSystem)。同一个体系结构...
  • Qt5.10.1的交叉编译过程

    千次阅读 2019-07-25 20:28:07
    尽管网上有很多Qt交叉编译的教程,但自己操作的时候还是遇到很多问题,主要是环境配置的问题以及对qt中configure的不熟悉。写下来以防自己忘记。 主机:unbuntu 16.04 qt版本:5.10.1 目标版:全志R11 编译工具链...
  • arm交叉编译

    千次阅读 2017-12-04 18:49:14
    arm交叉编译
  • 本文主要用实例详细讲述了如何用交叉编译工具编译内核的操作。1、本地环境搭建过程:包括gcc工具链和本地编译依赖库配置;2、下载内核源码;3、配置.config 文件;4、交叉编译内核;5、打包编译好内核文件。gcc交叉...
  • 交叉编译GDB工具链

    千次阅读 2020-02-19 13:29:38
    1. 交叉编译 交叉编译是指在一种平台上编译出运行于另一种平台的程序。这里的平台,涉及硬件和软件两个部分,硬件平台指 CPU 架构,软件平台指操作系统。交叉编译主要针对嵌入式领域,因为嵌入式系统资源受限,没有...
  • 交叉编译入门

    2020-02-25 22:15:55
    通过这篇文章了解c/c++编译器的基本使用,能够在后续移植第三方框架进行交叉编译时(编译android可用的库),清楚的了解应该传递什么参数,怎么传递参数给编译器,各个参数的意义是什么,从而为后面音视频的深入学习...
  • 交叉编译&本地编译的区别

    千次阅读 2019-05-21 17:34:59
    1.1 什么是交叉编译 对于没有做过嵌入式编程的人,可能不太理解交叉编译的概念,那么什么是交叉编译?它有什么作用? 在解释什么是交叉编译之前,先要明白什么是本地编译。 本地编译 本地编译可以理解为,在当前编译...
  • 目标 window下交叉编译arm-linux的hello程序 window下交叉编译x86-linux的hello程序 简单的三个源文件: hello.c #include "hello.h" void hello_1() { printf("hello 1++++++++++++++++++++++++\n"); } hello.h #...
  • 交叉编译详解 一 概念篇

    万次阅读 多人点赞 2016-10-25 01:00:45
    本文总结了什么是交叉编译链,并介绍了交叉编译链的各个组成部分
  • Linux系统移植(一) – 交叉编译工具链 系统移植在嵌入式开发工作中占据着很重要的作用,我们只有将操作系统移植到特定的开发板上面后,我们才能进行进一步的开发工作。我们编写的应用程序或者驱动程序才能才开发板...
  • 在Linux环境交叉编译Qt5.5.0源码编译示例 实验环境 交叉编译平台 (on VMware14.0,Win10) 交叉编译链 gcc-linaro-arm-linux-gnueabihf-4.7-2013.03-20130313_linux 前提 得到交叉编译链以及下载Qt5.5.0的源码包 ...
  • Cmake 交叉编译

    千次阅读 2018-10-30 14:31:20
    交叉编译 最近由Kitware Robot编辑6个月前 页面历史记录 从版本2.6.0开始,CMake支持交叉编译交叉编译意味着该软件是为不同于构建的系统构建的。 这意味着  CMake无法自动检测目标系统  通常,可执行文件不...
  • ARM-Linux 交叉编译工具链安装

    千次阅读 2022-04-12 23:13:31
    说明:在Linux下安装arm-linux交叉编译工具链 修改时间: 修改内容: 1. 前言 在ubuntu中系统自带的gcc编译器是基于x86架构的,通过该编译器编译出来的代码只能在x86架构上运行。 如果需要在x86架构上编译arm架构的...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 30,855
精华内容 12,342
热门标签
关键字:

交叉编译的作用及过程