一文简述BSD,System V ,POSIX,SUS版本历史, 以及glibc移植的特性测试宏

移植指南:理解并应对glibc特性测试宏在程序移植中的作用
本文详细阐述了在程序移植过程中如何通过特性测试宏(如_POSIX_C_SOURCE, _XOPEN_SOURCE等)指定代码遵循的不同C标准,如POSIX, C89-C17, BSD, SystemV等,并展示了遇到API缺失时的处理策略。关键在于理解宏定义与glibc版本的关系,确保代码兼容性。

背景

我们在开发过程中经常需要进行程序移植。由于不同硬件环境、操作系统和各类依赖库版本的差异,会出现各种兼容性问题。
对于glibc来讲,除了C语言标准之外,还包含了posix、systemV等特性。为此,glibc针对不同的标准有特定的宏定义,用于指定当前代码说遵循的标准和版本。这些宏定义被称为特性测试宏(feature test macro)。

1. 标准概述

1.1 C语言标准

主要包含C89(1989年最初的ANSI C版本)、C99(1999)、C11(2011)和C17(2017)。

1.2 BSD

BSD(伯克利软件发布版,Berkeley Software Distribution)最初是加州大学伯克利分校1979年发布的unix版本,包括了C shell,vi等功能. 由此演化成BSD的标准.

1.3 System V

AT&T1983年发布了unix系统System III,并于1989发布了System V.通过对其它厂商的使用授权使其逐渐成为很多unix功能实现的基础.

1.4 POSIX

POSIX先是称为IEEE标准,之后又被ISO采纳,因此POSIX.1为ISO/IEC 9945-1:1990. 之后陆续升级了命令与工作标准(POSIX.2)、测试方法标准(POSIX.3)、实时 API(POSIX.4)等.

1.5 F151-1和FIPS 151

FIPS 是Federal Information Processing Standard(联邦信息处理标准)于1989年发布。由于美国政府是计算机系统的“大买家”,大多数计算机厂商都会确保其UNIX系统符合FIPS 151-1版本的POSIX.1规范。 FIPS 151-2标准已在2000年被废弃。

1.6 X/Open和XPG3

X/Open公司是由多家国际计算机厂商所组成的联盟(The Open Group) ,基于POSIX的开放系统标准。包含XPG3(1989), XPG4(1992). 其接口成为XSI(X/Open System Interface).

之后经过AT&T公司等一些列转让, X/Open又将XPG4版本2“重新包装”为SUS(Single UNIX Specification)(即SUSv1)或称之为UNIX95。其内容包括:XPG4版本2,X/Open Curses规范第4号版本2,以及X/Opena联网服务(XNS)规范第4号。
SUS版本2(SUSv2,http://www.unix.org/version2/online.html)于1997年发布.

1.7 大一统 SUSv3

2001年, IEEE , The Open Group和ISO委员会共同成立奥斯汀公共标准工作组(Austin CSRG), 批准了POSIX 1003.1-2001,成为ISO/IEC 9945:2002,该标准取代了之前的POSIX版本,被称为 SUSv3. 包含了基本定义, 系统接口, shell和

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值