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 的交叉编译或原生编译 的相关文章

  • setContextProperty 和对象的 setProperty 之间的区别

    我现在真的很困惑 有什么区别 QQmlApplicationEngine engine engine rootContext setContextProperty myObject userData and object gt setPro
  • 如何将包含 5000 条记录的 Excel 文件插入到 documentDB 中?

    我有一个 Excel 文件 最初约有 200 行 我能够将 Excel 文件转换为数据表 并且所有内容都正确插入到 documentdb 中 Excel 文件现在有 5000 行 在插入 30 40 条记录后不会插入 其余所有行不会插入到
  • 为什么 VB.NET 和 C# 中针对值检查 null 存在差异?

    In VB NET http en wikipedia org wiki Visual Basic NET有时候是这样的 Dim x As System Nullable Of Decimal Nothing Dim y As System
  • 如何使用 MVVM 更新 WPF 中编辑的数据? [复制]

    这个问题在这里已经有答案了 我正在为聊天应用程序构建 UI 设计 在尝试更新所选联系人的消息时遇到问题 选择现有联系人 选择编辑选项 然后编辑其属性 例如用户名和图像 后 唯一进行的更改是联系人的用户名和图像 我仍然想更改 MessageM
  • 使用API​​隐藏程序标题栏

    它可以使用 c 和 windows api 删除窗口控制台标题栏 如果是的话如何 请 这个简单的应用程序隐藏并显示其所在控制台的标题栏 它会立即将控制台标题更改为 guid 以查找窗口句柄 然后 它使用 ToggleTitleBar 使用找
  • 导出类时编译器错误

    我正在使用 Visual Studio 2013 但遇到了一个奇怪的问题 当我导出一个类时 它会抛出 尝试引用已删除的函数 错误 但是 当该类未导出时 它的行为会正确 让我举个例子 class Foo note the export cla
  • 如何在 Asp.net Gridview 列中添加复选框单击事件

    我在 asp 中有一个 gridview 其中我添加了第一列作为复选框列 现在我想选择此列并获取该行的 id 值 但我不知道该怎么做 这是我的 Aspx 代码
  • 矩阵向量变换

    我正在编写一个代码来制作软件蒙皮器 骨骼 皮肤动画 并且我正处于 优化 阶段 蒙皮器工作得很好 并且在 Core 上 1 09 毫秒内对 4900 个三角形网格与 22 个骨骼进行蒙皮Duo 2 Ghz 笔记本 我需要知道的是 1 有人可以
  • 在 MATLAB 中创建共享库

    一位研究人员在 MATLAB 中创建了一个小型仿真 我们希望其他人也能使用它 我的计划是进行模拟 清理一些东西并将其变成一组函数 然后我打算将其编译成C库并使用SWIG https en wikipedia org wiki SWIG创建一
  • 手动将 ClientBase 集合类型从 Array[] 更改为 List<>

    我将自己的 WCF 代理与 Client Base 一起使用 我想做一些类似于 svc util 中的 ct 属性的操作 并告诉代理返回 List 集合类型 我不能使用 List 因为实体由 nhibernate 管理 所以我必须使用 IL
  • 编译器错误“错误:在文件范围内可变地修改了‘字符串’”

    考虑 include
  • 无法加载文件或程序集“EntityFramework,版本=6.0.0.0”

    我究竟做错了什么 我该如何解决这个问题 我有一个包含多个项目的解决方案 它是一个 MVC NET 4 5 Web 应用程序 在调试模式下启动后调用其中一个项目时 出现此错误 导致此错误的项目具有以下参考 两个都是版本6 0 0 0 应用程序
  • 您可以在一个 Windows Azure 实例上部署多个 Web 应用程序吗?

    是否可以在一个 windows azure 小型计算实例中运行一堆 Web 应用程序 我正在考虑使用 Azure 作为放置一堆处于开发和非生产状态的项目 Web 应用程序 的地方 有些实际上已经被封存了 但我想在某个地方有一个活跃的实例 我
  • 防止GDB中的PLT(过程链接表)断点

    在最新版本的 GDB 中 在库函数调用上设置断点会导致多个实际断点 调用过程链接表 PLT 实际的函数调用 这意味着当调用库函数时 我们每次都会经历两次中断 在以前的 GDB 版本中 只会创建 2 因此您只能得到一次中断 那么问题来了 是否
  • 如何用 C 语言练习 Unix 编程?

    经过五年的专业 Java 以及较小程度上的 Python 编程并慢慢感觉到我的计算机科学教育逐渐消失 我决定要拓宽我的视野 对世界的一般用处 并做一些 对我来说 感觉更重要的事情就像我真的对机器有影响一样 我选择学习 C 和 Unix 编程
  • 正确使用“extern”关键字

    有一些来源 书籍 在线材料 解释了extern如下 extern int i declaration has extern int i 1 definition specified by the absence of extern 并且有支
  • 将非算术类型作为参数传递给 cmath 函数是否有效?

    给定以下用户定义类型S具有转换功能double struct S operator double return 1 0 以及以下调用cmath http en cppreference com w cpp header cmath使用类型的
  • 使用(linq to sql)更新错误

    我有两个表 通过外键 CarrierID 绑定 Carrier CarrierID CarrierName CarrierID 1 CarrierName DHL CarrierID 2 CarrierName Fedex Vendor V
  • 如何访问窗口?

    我正在尝试使用其句柄访问特定窗口 即System IntPtr value Getting the process of Visual Studio program var process Process GetProcessesByNam
  • 从有符号字符转换为无符号字符然后再转换回来?

    我正在使用 JNI 并有一个 jbyte 类型的数组 其中 jbyte 表示为有符号字符 即范围从 128 到 127 jbyte 表示图像像素 对于图像处理 我们通常希望像素分量的范围为0到255 因此 我想将jbyte值转换为0到255

随机推荐

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

    如何使用 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 系统上进行开发 要么将代码复制到本机架