CPU Arch 的交叉编译或原生编译

2023-11-30

编写依赖于 CPU 架构的软件时,例如在 x86 上运行的 C 代码或在 ARM CPU 上运行的 C 代码。通常有两种方法可以编译此代码,要么交叉编译到 ARM CPU 架构(例如,如果您在 x86 系统上进行开发),要么将代码复制到本机架构 CPU 系统并进行本机编译。

我想知道本机方法与交叉编译方法相比是否有好处?我注意到 Fedora ARM 团队正在使用慢速/低功耗 ARM 设备的构建服务器集群来“本地”编译他们的 Fedora ARM spin……当然,Red Hat 支持的项目可以访问一些运行 x86 CPU 的强大构建服务器可以在 1/2 的时间内完成工作...那么他们为什么选择呢?我通过交叉编译我的软件错过了一些东西吗?


主要好处是所有./configure本地运行时不需要调整脚本。如果您使用阴影rootfs,那么您仍然有配置在运行uname检测CPU类型等。例如,参见这个问题. pkgconfig和其他工具试图缓解跨建筑,但包通常会得到本土建筑 on x86先纠正,然后也许本土建筑 on ARM. 跨建筑可能会很痛苦,因为每个包可能都需要单独调整。

Finally, if you are doing profile guided optimizations and running test suitesas per Joachim, it is pretty much impossible to do this in a cross build environment.

编译速度ARM明显比人类快包构建器, read configure, edit configure,重新运行配置、编译、链接周期。

这也非常适合持续集成战略。各种套餐,特别是图书馆,可以快速构建/部署/测试。的测试图书馆可能涉及数百个依赖包。手臂Linux 发行版在升级和修补可能有的基础库时通常需要原型更改hundreds至少需要重新测试的依赖包。由计算机完成的缓慢循环总是比人工干预后的快速编译要好。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

CPU Arch 的交叉编译或原生编译 的相关文章

随机推荐

  • 如何计算传输和接收的网络利用率

    如何使用 C 或 shell 脚本计算传输和接收的网络利用率 我的系统是嵌入式linux 我当前的方法是记录收到的字节 b1 等待1秒 然后再次记录 b2 然后知道链接速度 我计算所使用的接收带宽的百分比 接收利用率 b2 b1 8 lin
  • C++ 字符串和字符串文字比较

    所以我想简单地做一个std string string literal 这会工作得很好 除了我正在创建我的字符串 std string str strCreateFrom 0 strCreateFrom find 并找到回报string n
  • gnuplot如何给出动态绘图的列号?

    我正在自动执行使用 gnuplot 创建小图的任务 我需要传递要绘制的数据文件中的列号 pfile system echo file colnum system echo colnum plot pfile using 4 column c
  • 实体框架代码优先非常慢

    从广泛的谷歌搜索来看 我似乎不是第一个遇到这个问题的人 但我一直找不到能够令人满意地解决它的人 我正在与遗留数据库集成 我只是试图与单个表集成 目前 但我对该模型的第一次查询需要大约 12 秒左右的时间来执行 正如预期的那样 第二个电话几乎
  • pip3 无法在 ubuntu 20.04 上工作:“没有属性‘SourceFileLoader’”

    在 Ubuntu 20 04 上 我使用以下命令安装了 pip3 sudo apt install python3 pip 但当我跑步时pip3我收到以下错误 Traceback most recent call last File usr
  • 无法在 Unity 5.3.4 中使用 facebook sdk 和 google play 一起构建 android

    我在我的项目中使用 facebook unity sdk 7 3 0 和 GooglePlayGamesPlugin 0 9 32 它不允许我为 android 构建并失败并出现错误 无法将类转换为 dex 格式 有关详细信息 请参阅控制台
  • 在组合框/列表框中启用鼠标滚轮滚动

    我正在使用 VBA 在 Excel 2007 中构建用户窗体 并且想知道如何启用组合框和列表框的鼠标滚轮滚动 我是否需要更新版本的 Office 才能获得此功能 还是可以通过编码实现此功能 如果使用 32 位 Windows 则解决方案为彼
  • 比较大量 PDF 文件的工具? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心以获得指导 我需要比较大量 PDF 文
  • stl 中的错误,系列少于两个周期(错误?)

    I have 两年的月度数据 but stl 似乎至少需要两年零一个月 这是两个简单的例子 示例 1 返回 stl x 周期性 中的错误 系列不是周期性的或周期少于两个 dat 24 lt cumsum rnorm 24 x 24 lt t
  • 在 R 上的 igraph 中查找大型数据集中的根顶点

    假设您有一个根据边列表创建的图 并且有数百个顶点 我想要做的是确定所有后续顶点都与之相关的初始顶点集 例如母亲或家谱 这是一个代表 冰岛 的数据集 即从冰川上脱落并漂浮在海上的大型平板状冰片 初始裂缝代表根节点 随后的顶点是对这些较小碎片
  • 使用参数调用宏:Python win32com API

    我想做的是从我的 python 代码中调用宏 这是来源示例 xl win32 gencache EnsureDispatch Excel Application xl Visible 1 xl Workbooks Open C Progra
  • gsub 无法删除 R 中的空括号

    我在 R 中有以下字符串 A lt A 23 56 hh 我想得到以下输出 A 23 56 hh 我尝试了以下代码 B lt gsub pattern replacement x A 这没有产生预期的结果 我怎样才能完成同样的任务 Try
  • 在 Javascript 中获取对象任意级别的元素

    鉴于以下情况 var a JSON parse fst data1 snd ind2 data2 var index fst var res a index res data1 var index2 var res2 a index2 re
  • Microsoft 2010 Visual C,安装FLTK

    MSV2010C 的 FLTK 问题 我正在关注 编程 使用 C 的原理和实践 尝试让 FLTK 正确运行时遇到了麻烦 我为自己工作过一次 然后就再也没有了 我已详细说明了下面所采取的步骤 如果有人能注意到任何奇怪的地方 我将不胜感激 我的
  • 成功使用后几​​天后“未找到”RVM

    我几天前安装了RVM 运行得很好 几天后 现在 我猜是在重新启动几次之后 shell 说它就像没有安装一样rvm not found虽然我可以在我的眼中看到这一切 rvm文件夹 还有一个scripts文件夹到那个 我尝试重新运行安装脚本 但
  • 如何为Rails 3站点中的每个页面设置不同的背景图像?

    我正在尝试弄清楚如何为 Rails 3 站点的每个页面设置不同的背景图像 我怎样才能做到这一点 而不必重复每个页面的 css 文件中的内容 application html erb div class container div class
  • 如何阻止 Eclipse 编辑器在 RCP 中关闭

    我正在开发基于 Eclipse 的 RCP 我们需要防止用户关闭打开的编辑器之一 期望的行为是 用户单击编辑器窗口中的 X 或 CTRL W 弹出一个对话框 显示 如果您关闭此编辑器 您的活动将停止 您想这样做吗 如果他们点击 是 它就会关
  • 如何在 UWP 中写入只读 sqlite 文件

    所以我是 UWP 新手 在完成连接到 sqlite 后tutorial 我对代码进行了一些修改以尝试新事物 我没有在本地文件夹中创建并保存 sqlite 文件 而是将文件目录更改为安装位置 创建了一个文件夹 data 并在其中添加 sqli
  • 我想引用另一个 python 脚本中的变量

    一个变量AA is in aaa py 我想在我的其他 python 文件中使用这个变量bbb py 我如何访问这个变量 您正在寻找modules In aaa py AA Foo In bbb py import aaa print aa
  • CPU Arch 的交叉编译或原生编译

    编写依赖于 CPU 架构的软件时 例如在 x86 上运行的 C 代码或在 ARM CPU 上运行的 C 代码 通常有两种方法可以编译此代码 要么交叉编译到 ARM CPU 架构 例如 如果您在 x86 系统上进行开发 要么将代码复制到本机架