Unix编程培训讲义.docVIP

  1. 1、本文档共18页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Unix编程培训讲义 陆云海 1999.04.19 初稿 1999.11.26 第二版 2000.03.23 第三版 1. 开发环境 以较为流行的Unix操作系统为例,介绍Unix下开发编程的主要内容。 SUN工作站与服务器的操作系统是Solaris,常见版本是Solaris 2.5、2.5.1、2.6,较新的是Solaris 7 (相当于2.7版吧),最新的是Solaris 8。Solaris的前身是SunOS,Solaris 2.5相当于SunOS 5.5。SunOS是基于BSD Unix的,而Solaris是基于Unix SVR4的。 HP工作站与服务器的操作系统是HP-UX,常见的是HP-UX 10.10、10.20,较新的是HP-UX 11.0。 DEC服务器(现在该称为Compaq的AlphaServer)的操作系统是Digital Unix,常见的Digital Unix 4.0D(也叫OSF1),Compaq收购DEC后将Digital Unix更名为TruUnix 64。 2. 编译系统 C/C++ 由于历史的原因,Unix系统的开发主要是使用C/C++语言。 C语言的编译器是cc,这是每个系统都会自带的,在/usr/ccs目录下。对于有些需要使用标准C语言的场合,需要安装ANSI C。 C++语言是对C语言的扩充,每家Unix系统的支持就不一样了。 SUN机上的C++是SUN Visual Workshop的一部分,需要安装workshop后才能使用C++,也可以只安装C++。安装workshop需要license。SUN上的C++编译器是CC,一般安装在/opt/SUNWspro/bin目录。 HP机上的C++是HP开发工具包SoftBench的一部分。SoftBench的安装需要license。HP机上的C++编译器是CC,一般安装在/opt/CC/bin目录。 DEC机上的C++是操作系统内置的,编译器是cxx,在/usr/bin目录。 2.1 编译过程 主要分为编译和链接两大步。 具体过程:①编译预处理→②编译→③优化→④汇编→⑤链接。 ①编译预处理 宏定义替换、条件编译、头文件包含、特殊符号(__FILE__、__LINE__等)。 ②编译 常数、关键字、标识符、操作符。 词法分析、语法分析。 ③优化 中间代码优化、目标代码的生成。 ④汇编 可重定位文件.o、共享的目标文件.so(.sl)、可执行文件。 ⑤链接 静态链接、动态链接。 2.2 cc命令 以SVR4上的C编译系统为基础,介绍cc的用法。 2.2.1 cc基本用法 cc [选项] 源文件 [.o文件] [库文件] 如果源文件中含有main函数,则生成执行文件,缺省情况为在当前目录产生a.out。 否则,则只生成.o文件。 2.2.2 常用选项 -o 目标文件名:生成指定的目标文件名,可以是执行文件或.o文件,要看有没有-c选项; -c :只生成.o文件; -P :只进行预处理; -C :保留注释; -S :只生成汇编代码; -D符号[=值] :定义符号,若未指明值,则缺省值为1,可以有多个; -Iinclude目录 :定义include文件的目录,可以有多个; -L库目录 :定义库文件的目录,可以有多个; -l库名 :链接时包含库 lib库名.a或lib库名.so; -g :加入调试信息; -O[n] :进行代码优化,有的系统还带有优化级别。 2.3 链接处理 链接有静态链接和动态链接两种。 2.3.1缺省设置 标准的C函数库 libc.a(静态库)、libc.so(动态库)主要包含了以下函数: 标准I/O函数(stdio.h):标准输入输出、文件输入输出等; 字符串处理函数(string.h):strlen、strcpy等; 字符分类(ctype.h):isalpha、isupper等; 字符串/整数转换(stdlib.h):atoi、itoa等; 库函数形式实现的系统调用(unistd.h,sys/types.h,sys/stat.h,fcntl.h):open、read等。 2.3.2标准库 -l选项 指定库名,缺省情况下系统自动包含选项-lc,即自动包含标准C库。 如果统一库目录下有库的两个版本,则优先使用动态库。 缺省的路径:/usr/ccs/lib、/usr/lib 动态库:所有内容被映射到进程虚地址空间中。执行文件小,内存占用小。但是运行时必需存在连接的库。 静态库:执行文件只包含所需要的代码。执行文件大,内存占用大。但是运行时不需要连接的库。 -dn选项(SUN),指明只进行静态连接。 -l 选项放在最后较好。 2.3.3 静态库、动态库的建立 静态库,又程档案库,建立步骤: 1) 生成目标文件

文档评论(0)

word.ppt文档 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档