LSB由FSG开发和维护。FSG是一个独立的非盈利组织,该组织专注于通过发展和促进标准来加速开放源码软件的发展。几年前,一些志愿人员发起了LSB项目, LSB项目的目的是发展和改进标准,提高Linux和其它类似系统间的兼容性,使应用软件可以在任何系统上运行。 LSB标准定义了一个二进制环境和与之相关的标准文档,在这个二进制环境中,任何一个符合LSB标准的应用程序都能够正常运行。LSB标准文档包括了一系列基础API、库和互用性标准,还包括了测试套件、开发环境、执行案例和开发文档。 随着LSB开发的深入,一些大的Linux发行商开始积极参与其中,一些大型企业,如HP和IBM等也逐渐加入。
2000年5月,自由标准组织正式成立,全面负责LSB计划。
2001年7月4日,LSB 1.0发布,迈出了Linux标准化道路上重要的一大步。LSB 1.0的规范仅包括了通用LSB(LSB Common)1.0.0。
2002年2月4日,在美国召开的LinuxWorld大会上,HP、IBM、拓林思、SuSE、Red Hat、Caldera和Ximian公司联合发布了LSB 1.1。LSB 1.1对Linux核心功能和一些组件进行了标准化。它包括一组公共API、一个开发包和一些测试功能。LSB 1.1在1.0的基础上增加了对IA32架构处理器的支持,规范包括通用LSB 1.1.0和IA32处理器专用规范(LSB IA32)1.1.0。LSB 1.2 LSB 1.2包括了通用LSB规范及对IA32、IA64和PPC32架构处理器的专用规范。LSB 1.3 LSB 1.3在1.2的基础上又增加了对IBM S/390和S/390X的支持。规范包括通用LSB 1.3、LSB IA32 1.3、LSB IA64 1.3、LSB PPC32 1.3、LSB S390 1.3和LSB S390X 1.3。
2004年9月14日正式发布LSB 2.0。其最大特点是增加了对C++的二进制接口。
2004年10月21日,LSB 2.0.1发布。
2005年7月1日, LSB 3.0发布。
LSB 3.0更新了原来版本的一些基本规范和执行,特别是SUS(Single Unix Specification,单一Unix规范)的升级。以SUS 3.0为基础。SUS 3.0同时也是IEEE 1003 1-2001标准(POSIX)和ISO/IEC 9945:2003标准。LSB 3.0中最重要的是文档的重构和LSB上层附加标准的发展。文档重构的目的是推动LSB未来的发展。LSB 3.0中另一个重要的新特点是引入了对POSIX线程和C++应用的支持,它增加了C++的应用二进制接口(ABI),用于改善代码互用性。 这一特点意义重大,因为现在的大多数应用都是用C++编写,通过在LSB中加入C++支持,使数以千计的软件开发商能以较低成本将他们的应用移植到Linux上,由此带来Linux应用软件数量上的突飞猛进。LSB 3.0的文档结构是附加规范模块的根基,这些附加规范模块在核心LSB规范(Core LSB Specification)之上。这些新模块允许新功能的增加,其中一些功能甚至是被认为在LSB范围之外的。新模块还允许LSB以外的组织通过使用LSB确定的框架来添加新功能。LSB 3.0.0 标准文档,LSB标准发展到了3.0,结构与2.0一样。LSB 3.0 基于新的C++ 二进制接口,还有其他的改进。另外还包括PAM和FHS 2.3。,以及包括加入gcc3.4,librt,一些新功能和新接口以及新命令等。
三、LSB标准的构成
LSB是一种应用程序二进制接口,主要解决Linux系统与应用程序之间的兼容问题。LSB是在IEEE POSIX源代码标准和Unix规范基础上建立起来的,包含多种接口技术。也有一些接口技术未被LSB收取,这些接口大多是开发接口或用户级工具。LSB可以将源代码标准扩展至其它领域,例如图形领域等。此外,LSB还包括一些必要的技术细节,例如支持大型二进制应用软件平台的二进制执行文件格式等。
1.文档LSB 3.0的文档结构是附加规范模块的根基,这些附加规范模块在核心LSB规范(Core LSB Specification)之上。这些新模块允许新功能的增加,其中一些功能甚至是被认为在LSB范围之外的。新模块还允许LSB以外的组织通过使用LSB确定的框架来添加新功能。表1是LSB 3.0规范的重要组成,Architecture栏目是3.0文档,空白处表示没有建立相关文档。包括公共规格(gLSB)和特殊架构规格(archLSB)认证,其中gLSB定义了那些基于LSB 的程序在运行过程各模块间的标准接口,archLSB定义了基于不同架构的处理器(CPU)的标准接口。
表1 LSB 3.0文档组成
文档集 |
功能域 |
Architecture | |||||||
Generic |
IA32 |
IA64 |
PPC32 |
PPC64 |
S390 |
S390X |
AMD64 | ||
LSB Base |
LSB |
LSB-Core-generic |
LSB-Core-IA32 |
LSB-Core-IA64 |
LSB-Core-PPC32 |
LSB-Core-PPC64 |
LSB-Core-S390 |
LSB-Core-S390X |
LSB-Core-AMD64 |
C++ |
LSB-CXX-generic |
LSB-CXX-IA32 |
LSB-CXX-IA64 |
LSB-CXX-PPC32 |
LSB-CXX-PPC64 |
LSB-CXX-S390 |
LSB-CXX-S390X |
LSB-CXX-AMD64 | |
Graphics |
LSB-Graphics |
||||||||
Individual |
LSB |
LSB-generic |
LSB-IA32 |
LSB-IA64 |
LSB-PPC32 |
LSB-PPC64 |
LSB-S390 |
LSB-S390X |
LSB-AMD64 |