freebsd手工编译安装程序

freebsd手工编译安装程序

ID:9508878

大小:57.50 KB

页数:7页

时间:2018-05-01

freebsd手工编译安装程序_第1页
freebsd手工编译安装程序_第2页
freebsd手工编译安装程序_第3页
freebsd手工编译安装程序_第4页
freebsd手工编译安装程序_第5页
资源描述:

《freebsd手工编译安装程序》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库

1、FreeBSD手工编译安装程序  虽然使用PortsCollection编译和安装软件非常简便,然而仍有两个理由来使用手工编译安装方式。一方面是PortsCollection中并不能涵盖所有的软件,有很多软件没有收入PortsCollection中。有很多原因使得一些很优秀的软件没有被收集入PortsCollection,例如,版权因素,或者没有志愿者对它移植到FreeBSD进行维护。另一方面,即使是通过Port来定制软件,仍需要了解了手工编译安装的过程和各种编译工具的使用,才能正常进行定制工作。  通常在FreeBSD下编译并安装应用程序并不困难,因为FreeBSD是一种非常标

2、准的Unix,为Unix开发的标准C程序很容易就能在它上面编译运行。编译和软件工具  为了编译和安装一个应用程序,必须要了解编译和运行软件的一般方法。对于大型程序和要求高效率的软件,通常用高级语言C来开发,使用C语言编译器将C源程序编译成执行程序。由于使用高级语言不依赖于硬件结构,这使得软件非常容易移植。Unix不仅提供了编译器,而且还提供了众多的工具来帮助进行编译和维护,最有用的工具为make。GNUC与编译连接过程  C作为一种编译型的高级语言,这就是说运行C程序之前要将其先编译成可执行的由机器指令构成的执行程序,因此就需要使用一个编译器来对C源代码进行处理,FreeBSD使

3、用的是GNU的C编译器。$cchello.c$./a.outHello,来查看库文件的内容。$cc-cf1.c$cc-cf2.c$arcmlib.af1.of2.o$nmmlib.a  FreeBSD使用的C语言编译器gcc是一种非常流行的,多平台、高效率的C语言编译器,它提供了多种选项用于生成应用软件。以下为常用的一些选项:  -L  定义连接库文件的目录  -I  定义C源码的头文件的目录  -o  后面跟的参数为要生成的执行文件的名  -O  进行编译优化,可以指定使用不同的优化级别,从O2到O6,每个不同的级别使用的优化设置不同。  相关的选项还有定义生成的指令码类型的参

4、数,如-m486生成486指令,缺省的gcc版本(2.7.2)不支持Pentium代码。  -g  加入调试代码,可以在完成后使用strip命令删除用于调试的信息  -c  仅仅进行编译而不进行连接,生成目标文件  -fPic  生成相对地址的代码,用于最后生成动态连接库  -static  强制生成静态连接的程序  -aout  生成a.out格式的执行文件、目标代码等,缺省使用ELF格式  -elf  3.0之后为缺省设置,生成ELF格式的目标和执行代码  可以通过命令行参数查看当前使用的GNUC编译器的版本:$cc–versionGccversion2.7.2.

5、1  FreeBSD当前使用GNU的C编译器gcc的版本为gcc2.7.2.1,这不是gcc编译器的最新版本,但稳定性非常好。虽然当前新版本的gcc2.8已经很稳定了,但是由于编译器在系统中的重要性,编译器出现问题会造成系统的稳定问题,因此FreeBSD还没有转向gcc2.8。另一个没有完全使用gcc2.8的重要原因是生成的执行文件格式问题,gcc2.8不再支持生成a.out执行格式的二进制程序。但完全转向gcc2.8版本是必然趋势,在当前正在开发的FreeBSD4.0-current中,已经使用了gcc2.8作为标准配置。  在3.1系统中,如果想使用gcc2.8,就需要安装P

6、ackagesCollection中提供的gcc-2.8软件包(或者使用PortsCollection对源代码进行编译)。事实上还有另外两个更强大的根据gcc进一步开发的编译器,pgcc支持Pentium代码(标准的gcc只支持生成486代码),egcc除了支持Pentium代码之外,还提供了更大的优化能力。这些版本是商业公司依据gcc进行的开发,但根据GPL许可,任意使用者都可以根据需要选择使用,使用这些编译器版本能进一步发挥系统的能力。make  通常应用程序都比较复杂,那么其源程序就不仅包括一个文件,而是由多个文件构成,这样应用程序的编译和连接过程就相对复杂得多。最简单的情

7、况下可以使用shell程序来自动完成这个任务,然而由于并不是每次都更改了所有的文件,每次都完全重新编译所有的代码,不但浪费了处理器资源,也使得每次作一次小改变就得编译所有得文件,效率低下。最好是能够按照需要,编译改动过的代码文件,而对没有更新过的文件就不必重新编译,这样就节约了系统的处理能力。  如果要使用shell脚本来处理这些依赖关系来,则要求根据文件的更新时间进行维护,需要的shell脚本就比较复杂。Unix提供了一个程序──make,来帮助按照代码之间的时间依赖关系来进行

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。