18.Unix/Linux 系统的 C 编程 课程名称 UNIX 系统环境与软件开发 教学章节 §11Unix/Linux 系统的C 编程 教学目的 掌握UNIX/Linux 系统cc、 gcc 和 g++的使用方法,掌握静态库和动态库的构建与使用方法 教学重点 UNIX/Linux 系统的文件相关的系统及使用方法 教学难点 UNIX/Linux 系统的文件相关的系统及使用方法 知识点 Cc、 gcc 和 g++的使用,文件相关的系统调用 教学时间 班级 教学器具 课件;多媒体播放系统 教学过程 11.1 编译器 11.1.1 功能及用法 1.为什么要使用编译器? C 语言源程序需要经过编译和链接这两个过程才能转换成二进制可执行程序。 一般在Unix 系统中使用的C 编译器是cc( C Compiler 的缩写)。在各个Linux 发行版本中广泛使用的C 编译器名为gcc( GNU cc)。 2.功能 gcc 能将C/C++源程序和目标程序编译并调用链接程序ld 生成可执行文件,如果用户没有给出可执行文件的名字,gcc 将默认生成一个名为a.out 的可执行文件。 3.用法 gcc 的一般用法为: gcc [options] 其常用格式为: gcc [-c][-S][-E][-s][-g][-static][-shared][-rdynamic] [-Idir „][ -Ldir „][ -lmylib][-x Language][-Olevel] [-Dmacro[=defn] „][ -Umacro][-mmachine-option „] [-o out_file] infile „ 几点说明:gcc 根据源程序的后缀名来决定使用哪一种语言的编译器进行编译工作。后缀名为“.c”(小写)的文件被gcc 认为是C 语言的源程序文件。例如:gcc hello.c。 gcc 编译出来的可执行程序默认是a.out。 g++是一个C++版本的gcc 编译器。g++要求C++语言源程序文件带有后缀名“.cc”。例如:g++ hello.cc 11.1.2 参数及说明 -c 编译后仅输出*.o 型的目标文件,而不连接生成可执行程序 -S 编译后仅生成汇编语言文件*.s,但不生成目标文件和可执行代码 -s 生成可执行文件时,删除符号表和重定位信息。生成成品软件时使用 -E 在预处理过程后结束,不进行编译和连接,也不生成可执行代码 -g 在可执行文件中加入调试信息,便于程序的调试 -Idir 将目录dir 添加到头文件搜索范围 -lmylib 连接时搜索库libmylib.a -Ldir 将目录dir 添加到库文件搜索范围 -o outfile 指定输出文件名。若不指定则采用默认方式 -mcpu=cpu-type 生成与机器相关的汇编代码 -O[L] 编译时进行优化。L 为优化级别,分别0~3 和s。生成最终产品...