可执行程序格式在FreeBSD下的可执行程序通常可分为两类,一类为使用各种解释语言编写的脚本,如sh、awk、perl、Tcl等,这些程序需要解释程序进行解释执行,小巧方便,对于实现不常使用、不要求效率的程序非常有用;另一类就是使用C等高级语言编译后产生的可执行二进制程序 。
Unix之所以功能强大,原因之一就在于它提供了强大的再开发能力 。这不仅与提供了高级语言C的编译器有关,而且也与提供了很多种能以解释方式执行的简单脚本语言有关 。解释程序脚本的特点是方便性、简单灵活,而且也比较容易学习入手 。很多情况下,需要完成的工作任务功能比较单一,并不需要频繁运行,而且要求快速编写出来,这就适合使用解释型语言编写,并且解释程序本身就具备处理文本和字符串的便捷性,并能够和很多现有程序通过系统提供的管道、环境变量等方式结合起来,使得它们非常适合实现文本处理功能 。
解释语言的缺点是每次运行程序时都要载入语言的解释器,解释执行程序,因而效率较低,并且不能直接操纵内存和I/O设备,不适合编写大型程序和对效率要求较高的场合 。
每个解释脚本程序的第一行指出该脚本程序使用的解释器,例如一个普通的shell程序的第一行为:
#! /bin/sh不同的解释语言可用在不同的方面,最常用的有shell解释程序,依据使用shell的不同,也分为不同的shell脚本,基本上也分为sh和csh两种不同的风格 。系统管理中经常使用shell程序来执行一些日常管理任务,很多软件也使用shell程序来提供辅助安装和设置任务 。perl也是一种常用的、功能强大的解释语言,它兼有解释性程序的方便性和高级编程语言的强大功能,使程序员能在很短的时间内写出非常有效的程序 。因此perl得到了众多程序员的支持,通过为perl开发了更多的程序模块,进一步使得perl的处理能力变得更为强大 。当前perl已经成为了最流行的一种解释语言,尤其在编写Web服务器上的CGI程序方面,更是处于无可争议的地位 。Tcl/tk是另一种解释语言,它能用在X Window系统下,使用描述语言显示不同的X控件,因此很多X应用程序使用它来建立自己的图形接口 。
二进制执行程序
使用高级语言编写、并经过编译得到的二进制执行程序执行效率更高,并且只有二进制格式的执行文件才能充分利用Unix系统提供的全部功能 。同样系统内核也是一个特殊格式的二进制执行文件 。
早期的Unix使用a.out格式作为它的执行文件格式,随着Unix的发展,又出现了其他几种执行文件的格式,当前最重要的执行文件格式为ELF格式,采用这种格式的最初想法是为了在不同平台间采用相同的执行文件格式,并实现动态共享连接库 。虽然ELF文件格式并没有达到AT&T最初设想的全部目的,但这种文件格式却成为最流行的执行文件格式 。除此之外,实际使用的文件格式还有一种较老的COFF格式,这种格式是在UnixSystem V R3.2中使用的,当前只有老版本的SCO Unix中还在使用它,而SCO也正逐渐转向ELF格式 。
FreeBSD可以同时支持这两种执行文件的格式,FreeBSD 2.2.x之前的版本使用a.out格式作为缺省的执行文件格式,到FreeBSD 3.x之后ELF格式成为缺省的执行文件格式,并且以后会彻底转向ELF 。事实上在FreeBSD下的a.out格式具备了相当多的特性,如动态连接等ELF格式具备的特性,也有一些ELF格式不具备的特性,如压缩执行文件格式 。但由于FreeBSD中使用的编译器gcc决定不再支持a.out格式的缘故,因此FreeBSD也必须转向ELF格式 。这也是当前还支持a.out格式的FreeBSD版本缺省使用较老版本编译器的原因之一 。
- 56 FreeBSD连载:手工编译安装程序
- FreeBSD的boot0阶段介绍
- 34 FreeBSD连载:手工配置网络
- FreeBSD spell 拼字检查
- 60 FreeBSD连载:缺省内核配置选项
- 41 FreeBSD连载:在FreeBSD上查看邮件
- FreeBSD nessusd命令介绍
- FreeBSD trafcount命令介绍
- 77 FreeBSD连载:安全工具
- 65 FreeBSD连载:SMB/CIFS协议
