- 1、本文档共18页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 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) 生成目标文件
您可能关注的文档
- ubuntu完全优化.doc
- Ubuntu下GRUB启动界面的美化过程.doc
- Ubuntu下Mentohust的用法.doc
- Ubuntu下MSERVER系统与平台应用包安装使用文档.doc
- ubuntu下编译android.doc
- Ubuntu下编译Android及安装.doc
- Ubuntu一句话技巧--Linux入门.doc
- UBUNTU一句话技巧--Linux入门(给新手).doc
- ubuntu以纯命令行模式登录.doc
- ubuntu硬件文件知识.doc
- 高中环境教育:校园树木病虫害防治与生物多样性保护论文.docx
- 运用新媒体技术提升高中生学校运动会开幕式创意表现力的研究论文.docx
- 高中物理课堂中的学生合作学习与教师引导策略研究论文.docx
- 高中语文文言文教学中学生文言文阅读能力培养策略研究论文.docx
- 初中生物课堂:重金属污染对水生生物遗传变异影响研究论文.docx
- 高中生劳动教育与职业规划教育的融合路径探索论文.docx
- 初中化学实验教学中学生实验操作能力与批判性思维能力培养研究论文.docx
- 初中生艺术展览参观后的艺术评价与反馈体系构建论文.docx
- 特殊儿童空间认知发展对学习成绩的影响论文.docx
- 高中生物“遗传与变异”教学中的思辨性分析与应用论文.docx
最近下载
- 新标准英语(三起)3-6年级单词汇总.docx VIP
- 2023超星尔雅《大学生防艾健康教育》课后答案.pdf VIP
- 财会专业大学生就业与人才培养探讨.docx VIP
- 2025年7月国开电大本科《软件工程》期末考试试题及答案 .pdf VIP
- 2025遂宁市蓬溪县辅警考试试卷真题.docx VIP
- API 682-2014 离心泵和转子泵用轴封系统 第四版(中文).pdf
- 片式散热器介绍说明.pptx VIP
- 17小说阅读(能力训练)八年级语文下册(原卷版+解析).docx VIP
- 2024年6月英语四级真题(全3套)及答案解析.pdf VIP
- 计算机应用基础(本) 终结性考试任务一.docx VIP
文档评论(0)