c++ - 工具链如何与操作系统和平台架构相关

标签 c++ c operating-system arm cpu-architecture

<分区>

谁能解释一下工具链对操作系统和平台架构的依赖性,例如,如果我想为 arm 架构编译代码,我应该寻找平台架构还是平台运行的操作系统,然后使工具链适应它?

最佳答案

大多数编译器将它们的代码编译成汇编语言。它们生成的代码很可能取决于对操作系统的各种调用(例如,分配动态内存),并且具有定义文件属性的 header ,例如代码和数据部分的位置(例如 ELF、PE)。然后,汇编器将该程序集编译为目标文件,这些文件使用该平台的链接器进行链接。所有这些工具都为特定架构和操作系统生成代码。

这并不意味着编译器和链接器不能在另一种类型的系统上运行。为另一个系统编译代码的过程称为交叉编译。尽管这不如针对与编译器运行的相同平台进行编译那么常用,但它却很常用。这方面的几个例子是编译操作系统内核,这当然不能依赖另一个操作系统,或者为 Android 编译 native 代码(android NDK 包含一个交叉编译器)。

关于c++ - 工具链如何与操作系统和平台架构相关,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34461115/

相关文章:

c++ - 如何在编译时已知 N 的 C++ 中生成从 0 到 N 的 size_t 包

c - C中双向链表的内存问题

c - C语言中的Pascal和cdecl关键字

c - 用于查询和设置 bios 属性的 API

android - Android源代码中哪里可以找到字符串资源?

c++ - 编写自定义迭代器——如果您位于数组末尾怎么办?

c++ - 未定义对 `u_fopen_48' 的引用

c++ - C/C++ 中的最小二乘回归

mysql - 有端口号为什么还要套接字名?

自定义内核 : Implement filesystem