手工编译安装程序
2009-05-13 05:13:15来源:未知 阅读 ()
FreeBSD连载(56):手工编译安装程序
作者:王波 文章来源:新浪网 点击数:
更新时间:2005-8-31
手工编译安装程序
虽然使用Ports Collection编译和安装软件非常简便,然而仍有两个理由来 使用手工编译安装方式。一方面是Ports Collection中并不能涵盖所有的软件,有很 多软件没有收入Ports Collection中。有很多原因使得一些很优秀的软件没有被收集 入Ports Collection,例如,版权因素,或者没有志愿者对它移植到FreeBSD进行维 护。另一方面,即使是通过Port来定制软件,仍需要了解了手工编译安装的过程和各 种编译工具的使用,才能正常进行定制工作。
通常在FreeBSD下编译并安装应用程序并不困难,因为FreeBSD是一种非常标 准的Unix,为Unix开发的标准C程序很容易就能在它上面编译运行。
- 编译和软件工具
为了编译和安装一个应用程序,必须要了解编译和运行软件的一般方法。对 于大型程序和要求高效率的软件,通常用高级语言C来开发,使用C语言编译器将C源 程序编译成执行程序。由于使用高级语言不依赖于硬件结构,这使得软件非常容易移 植。Unix不仅提供了编译器,而且还提供了众多的工具来帮助进行编译和维护,最有 用的工具为make。
- GNU C与编译连接过程
C作为一种编译型的高级语言,这就是说运行C程序之前要将其先编译成可执 行的由机器指令构成的执行程序,因此就需要使用一个编译器来对C源代码进行处理 ,FreeBSD使用的是GNU的C编译器。
$ cc hello.c
$ ./a.out
Hello, world!
UNIX下缺省使用a.out作为生成的文件名,可以使用-o参数指出生成的执行文 件名。
事实上前面的编译生成执行文件的过程由两步组成,一是生成目标文件,通 常使用.o为后缀,然后进行连接生成执行文件。因此,可以使用ar将多个目标文件组 合成一个函数库文件,而可以使用nm来查看库文件的内容。
$ cc -c f1.c
$ cc -c f2.c
$ ar c mlib.a f1.o f2.o
$ nm mlib.a
FreeBSD使用的C语言编译器gcc是一种非常流行的,多平台、高效率的C语言 编译器,它提供了多种选项用于生成应用软件。以下为常用的一些选项:
-L
定义连接库文件的目录
-I
定义C源码的头文件的目录
-o
后面跟的参数为要生成的执行文件的名
-O
进行编译优化,可以指定使用不同的优化级别,从O2到O6,每个不同的级别使用的优化设置不同。
相关的选项还有定义生成的指令码类型的参数,如-m486生成486指令,缺省的gcc版本(2.7.2)不支持Pentium代码。
-g
加入调试代码,可以在完成后使用strip命令删除用于调试的信息
-c
仅仅进行编译而不进行连接,生成目标文件
-fPic
生成相对地址的代码,用于最后生成动态连接库
-static
强制生成静态连接的程序
-aout
生成a.out格式的执行文件、目标代码等,缺省使用ELF格式
-elf
3.0之后为缺省设置,生成ELF格式的目标和执行代码
可以通过命令行参数查看当前使用的GNU C编译器的版本:
$ cc –version
Gcc version 2.7.2.1
FreeBSD当前使用GNU的C编译器gcc的版本为gcc 2.7.2.1,这不是 gcc编译器的最新版本,但稳定性非常好。虽然当前新版本的gcc 2.8已经 很稳定了,但是由于编译器在系统中的重要性,编译器出现问题会造成系 统的稳定问题,因此FreeBSD还没有转向gcc 2.8。另一个没有完全使用 gcc 2.8的重要原因是生成的执行文件格式问题,gcc 2.8不再支持生成a.out 执行格式的二进制程序。但完全转向gcc 2.8版本是必然趋势,在当前正在 开发的FreeBSD 4.0-current中,已经使用了gcc 2.8作为标准配置。
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- FreeBSD下nginx+fast-cgi+mysql+zend的实现 2009-05-13
- gd 安装报错.求助 2009-05-13
- virtualbox for freeBSD 2009-05-13
- 讨论一下package和port一起使用的问题。 2009-05-13
- 从网上下载的packages为什么本地安装不了?[已解决!] 2009-05-13
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash