码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 重新认识交叉编译


    1. 我以前对交叉编译的认知

    引用正点原子的话来讲就是:

    说得对,但是不全面,直到最近项目中遇到了一个例子我才重新认识什么是交叉编译。

    2. build/host/target的概念

    参考: Cross-Compilation (automake)

    参考: Specifying Target Triplets (Autoconf)

    所以这里理解交叉编译与交叉编译器很重要:

    先说交叉编译: 这里只需要build和host,build代表可执行程序的编译环境,host代表编译出来的可执行程序的执行环境,只要build和host不同,就叫交叉编译。

    再说交叉编译器: 编译器首先也是一个执行程序,它也要被编译出来,它有自己的build环境(编译器在哪里被编译的),它有自己的运行host环境(编译器在什么环境运行),那么这里编译编译器本身可能是一个交叉编译行为(cross-compile,build != host),也可能不是一个交叉编译行为(native-compile,build == host); 另外,编译器本身可以编译程序,由编译器编译出来的程序的运行环境由target来指定,这里有可能build、host、target三者都相等,也有可能三者都不相等,也有可能build和host相等且与target不相等。

    所以这里总结一下,如果是编译器本身,看它的build和host是否相同,来判定该编译器是否被交叉编译;如果是可执行程序,看该可执行程序的build和host是否相同,来判定该可执行程序是否被交叉编译,同时也可以看编译该可执行程序的编译器的host与target是否相同来判定该可执行程序是否被交叉编译。

    3. 编译链的种类

    上面小节说到,对于编译器,它的build、host、target情况可能不同,对此分了如下类别:

    参考: Toolchains - eLinux.org

    • native toolchain
    • cross-compilation toolchain
    • cross-native toolchain
    • canadian toolchain

    4. 趣事: canadian toolchain和加拿大有啥关系?

    参考: https://en.wikipedia.org/wiki/Cross_compiler#Canadian_Cross

    参考: 什么是native compiler?什么是cross compiler? | 懒惰的程序员

    好吧,奇奇怪怪的知识又增加了。

    5. 一些编译器的例子

    X86 native toolchain:

    X86 cross-compile toolchain:

    ARM native toolchain:

    ARM64 native toolchain:

    ARM64 cross-compile toolchain:

  • 相关阅读:
    java学习第五天笔记-循环高级和数组106-最简单的方法定义和调用1
    教你几个MATLAB中数组索引的方法技巧
    [ 网络基础篇 ] MAP 迈普交换机常用命令详解
    基于springboot的鲜花销售商城网站
    Docker安装RabbitMQ并安装延迟插件
    KylinOSv10系统k8s集群启动mysql5.7占用内存高的问题
    【滤波跟踪】基于matlab无迹卡尔曼滤波惯性导航+DVL组合导航【含Matlab源码 2019期】
    Python 中的随机 IP 地址生成器
    AI 杀疯了,NovelAI开源教程
    java的泛型机制详解篇一(基础知识点)
  • 原文地址:https://blog.csdn.net/liaojunwu/article/details/132912904
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号