Freestanding C与交叉编译器的生成原理分析

本文探讨了C语言的两种实现标准——conforming freestanding和hosted implementation,以及它们在裸机开发和操作系统环境中的应用。重点分析了C语言交叉编译器的生成原理,包括为何需要为不同目标平台生成单独的编译器,以及生成步骤:首先编译生成Freestanding交叉编译器,接着用该编译器编译标准C库,最后重新编译生成Hosted的交叉编译器,解决C库路径和初始化环境问题。
摘要由CSDN通过智能技术生成

0 问题由来

以前也用过C51写过简单的裸机程序,但是并没有认真的考虑过其与Linux环境下一般C语言程序的不同,只是想当然地认为C是跨平台的语言,并没有考虑过C语言的标准问题。

今天在编译GCC交叉编译器时,遇到了种种问题,不得不重新考虑C语言的实现标准,否则很难清晰的了解交叉编译器的编译过程。

1 C编译器的两种实现要求

C语言标准的正式文档中明确提出了C编译器的两种实现标准:

1.1 conforming freestanding implementation

所谓的Freestanding,C编译器只需提供C语言语句的编译,外加

<float.h>
<limits.h>
<stdarg.h>
<stdint.h>
<stdalign.h>
<stdnoreturn.h>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值