裸机交叉编译器输入

2024-05-27

裸机交叉编译器的输入限制是什么...比如它不编译带有指针或 malloc 的程序...或者任何需要比底层硬件更多的东西...以及如何才能找到这些限制..

我还想问...我为目标 mips 构建了一个交叉编译器...我需要使用这个交叉编译器创建一个 mips 可执行文件...但我无法找到可执行文件在哪里...因为那里是1 个可执行文件,我发现 mipsel-linux-cpp 应该编译、汇编和链接,然后生成 a.out 但它没有这样做......

然而 ./cc1 给出了 mips 组件.......

有一个安装文件夹,其中有一个 gcc 可执行文件,它使用 i386 程序集,然后给出一个 exe...我不明白当我将目标指定为 mips 时,gcc exe 如何给出 i386 而不是 mips 程序集...

请帮助我真的无法理解什么是快乐......

我按照以下步骤操作.. 1.安装binutils 2.19 2.为mips配置gcc..(g++,core)


我建议您应该开始两个单独的问题。

GNU 工具链没有任何操作系统依赖性,但 GNU 库有。大多数 GCC 裸机交叉构建都使用 Newlib C 库,它提供了一组syscall您必须自己将其映射到目标的存根。这些存根包括实现流 I/O 和堆管理所需的低级调用。根据您的需要,它们可以非常简单或非常复杂。如果唯一的 I/O 支持是 UART 到 stdin/stdout/stderr,那么这很简单。您不必实现所有内容,但如果您不实现 I/O 存根,则您将无法使用 printf() 等。如果您希望 malloc() 工作,则必须实现 sbrk()/sbrk_r() 系统调用。

GNU C++ 库将与 Newlib 作为其底层库一起正常工作。如果您使用 C++,C 运行时启动(通常是 crt0.s)必须包含静态初始化程序循环,以调用代码可能包含的任何静态对象的构造函数。运行时启动当然还必须初始化处理器、时钟、SDRAM控制器、定时器、MMU等;这是你的责任,而不是编译器的责任。

我没有MIPS目标的经验,但是所有处理器的原理都是相同的,有一篇非常有用的文章叫做“使用 GNU 构建裸机 ARM” http://www.state-machine.com/arm/Building_bare-metal_ARM_with_GNU.pdf您可能会发现它很有帮助,其中大部分内容都是相关的 - 特别是移植有关实现 Newlib 存根的部分。

关于您的另一个问题,如果您的编译器名为 mipsel-linux-cpp,那么它不是“裸机”构建,而是 Linux 构建。此外,这个可执行文件并不是真正的“编译、汇编和链接”,而是一个分别调用预处理器、编译器、汇编器和链接器的驱动程序。必须正确配置它才能调用交叉工具而不是主机工具。我通常单独调用链接器,以便强制执行有关链接哪个标准库 (-nostdlib) 的决策,而且还因为当应用程序由多个执行单元组成时它更有意义。除此之外,我无法提供太多帮助,因为我一直使用由比我更有耐心的人构建的 GNU-ARM 工具,而且托管在 Windows 上,在 Windows 上,调用主机工具链的可能性较小(一个我也避免使用那些依赖 Cygwin 的工具链的原因)

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

裸机交叉编译器输入 的相关文章

随机推荐

  • 有没有办法编写一个匹配除文件夹中的文件之外的所有文件的全局模式?

    我需要编写一个文件 glob 它将匹配除特定文件夹中包含的文件之外的所有文件 例如 除了高级文件夹中包含的文件之外的所有文件 foo 我已经到达以下区域 foo 然而 这个 glob 似乎与 Ruby 中的任何文件都不匹配File fnma
  • jQuery Mobile 和 PhoneGap 中的身份验证

    我有一个使用 jQuery Mobile 和 PHP CodeIgniter 框架 构建的 Web 应用程序 现在我正在尝试制作它的 PhoneGap 版本 以使其可以作为独立应用程序进行分发 但是 PHP Web 应用程序 版本使用 Io
  • 自动用 if/else 替换条件运算符?

    特定的 JS 解析器 不在我的控制范围内 不理解嵌套条件运算符语法 如下所示 return num 1 condition condition something something 因此 我想使用 if else 块替换文件中的所有条件运
  • 如何从具有函数依赖关系的类型类中获取和使用依赖类型?

    如何从具有函数依赖关系的类型类中获取和使用依赖类型 为了澄清并给出我最近的尝试的一个例子 从我正在编写的实际代码中最小化 class Identifiable a b a gt b where if you know a you know
  • 连接多个 HLS 主播放列表

    DASH 清单提供了 周期 的概念 用于在单个清单中连接多个剪辑 每个剪辑都有自己的轨道信息 是否有类似的功能允许在一种 master master 播放列表文件中连接多个主播放列表文件 简短的回答 不 不在主播放列表级别 我猜想 HLS
  • 项目组织和命名约定

    这在某种程度上是后续每个模块组件重复模块名称 https stackoverflow com questions 25005897 repeating module name for each module component问题 我们决定
  • 使用c在linux上分块读写

    我有一个 ASCII 文件 其中每一行都包含一个可变长度的记录 例如 Record 1 15 characters Record 2 200 characters Record 3 500 characters Record n X cha
  • 如何将 Firebug 停靠在浏览器窗口中?

    在新窗口中打开后如何将 Firebug 停靠在浏览器窗口中 对于 Mac OS X 10 5 上的 Firefox 3 0 8 和 Firebug 1 3 我无法将其停靠在浏览器窗口中 如何解决问题 背景 火狐浏览器10 0 10 脚步 如
  • BigDecimal 的 java 数学库允许空值

    是否有一个 BigDecimal 库具有 BigDecimal 的基本操作 并且允许空值 出于数学目的 Null 应被视为 0 我不想对可能的空值进行所有空检查 您要么永远不允许数据库 应用程序中存在空值 要么使用以下命令查看和初始化所有内
  • 如何在 中继器中查找控件

    我有这个源代码 div div
  • Intellij Idea 需要永远解决 Maven 依赖关系

    我正在使用 intellij idea 最终版本 12 1 4 并尝试在项目中使用 Maven 这是我的 pom xml
  • 我可以在 Delphi 中使用字符串“IsEmpty”方法吗

    内河码头文件 IsEmpty 方法 http docs embarcadero com products rad studio delphiAndcpp2009 HelpUpdate2 EN html delphivclwin32 Syst
  • 在 Snakemake 规则中使用 Github URL 进行包装

    我知道在 Snakefile 中定义基于包装器的规则的三种工作方法 rule way1 wrapper repository wrapper 0 0 8 bio samtools sort rule way2 local relative
  • Phonegap HTML 应用程序和各种警报使浏览器挂起

    在测试phonegap应用程序时 我收到以下三个警报 并且浏览器挂起 从服务器运行应用程序 很多时候 这些警报会在 Ripple 插件启动之前弹出 我该如何删除这些 Alert 1 gap Device getDeviceInfo Devi
  • char 和 int 数组的区别

    当我尝试打印未初始化的内容时静态字符数组它给出运行时错误 空指针异常 而未初始化的静态整型数组给出空值 为什么 public class abc static int arr static char ch public static voi
  • x86 asm 图形设置的分辨率高于 640x480?

    我刚刚开始使用汇编语言 感觉像学习新东西 并且遇到了一些问题 到目前为止 我一直在浏览的所有教程都没有回答 或者太旧而无法知道 1 我尝试了一些搜索 也许我只是不知道正确的关键字 但我找不到用于更改屏幕分辨率等的图形模式的更新列表 我发现的
  • 无法找到来源:错误 [root] 错误:无法找到由“..”标识的修订版本

    我正在尝试从命令行运行迁移并不断收到错误 ERROR root Error Can t locate revision identified by faf3ebfbe667 正如其他帖子中所建议的 我删除了我的 sqlite 数据库和迁移文
  • 如何从 URL 获取图像大小 [重复]

    这个问题在这里已经有答案了 我正在尝试下面的代码从实时 URL 获取图像大小 以 KB MB GB 为单位 不是宽度和高度 但这不起作用 var xhr new XMLHttpRequest xhr open HEAD http www 2
  • Xcode 警告“未使用属性访问结果 - getter 不应用于产生副作用”

    当我调用本地例程时 我收到此警告 我的代码是这样的 void nextLetter NSLog s FUNCTION currentLetter if currentLetter gt letters count 1 currentLett
  • 裸机交叉编译器输入

    裸机交叉编译器的输入限制是什么 比如它不编译带有指针或 malloc 的程序 或者任何需要比底层硬件更多的东西 以及如何才能找到这些限制 我还想问 我为目标 mips 构建了一个交叉编译器 我需要使用这个交叉编译器创建一个 mips 可执行