参考
1 前言
1.1 环境
平台:Centos7.6
工具:vim,gcc,make
GCC编译器编译C源文件为可执行文件的步骤:
1.2 GCC
Linux系统下的GCC(GNU Compiler Collection)是GNU推出的功能强大、性能优越的多平台编译器,是GNU的代表作品之一。gcc是可以在多种硬体平台上编译出可执行程序的超级编译器,其执行效率与一般的编译器相比平均效率要高20%~30%。
GCC编译器能将C、C++语言源程序、汇程式化序和目标程序编译、链接成可执行文件,如果没有给出可执行文件的名字,gcc将生成一个名为a.out的文件。
- C源文件—->预处理.i—->编译.s(生成汇编文件)—->汇编.o/.obj(生成目标文件)—->链接.out(生成可执行文件)—->可执行文件
gcc命令参数(选项)
参数 | 含义 | 示例 |
---|---|---|
-c | 对文件进行预处理、编译和汇编,生成obj文件 | gcc -c hello.c |
-S | 只进行预处理和编译,生成汇编代码 | gcc -S hello.c |
-E | 只进行预处理,这个选项不生成文件,可以使用重定向或者-o选项使其生成一个文件 | gcc -E hello.c > hello.i或者gcc -E hello.c -o hello.i |
-o | 指定目标的名称,默认为a.out | gcc -o hello hello.c |
1.3 make
1.4 makefile
1.5 posix
2 标准IO
2.1简介
IO分为标准IO(stdio)和系统调用IO(sysio);
系统调用IO根据操作系统的实现方式而定,对于程序员来说会造成很大困扰(例如打开文件,Linux的系统调用为open,而Windows的系统调用为opendir),于是又有了标准IO,提供了一套标准的IO实现的库函数(例如pringtf,fopen等),它实际上也是调用了系统IO进行操作,但是屏蔽了系统调用IO,方便程序员调用。
常用的标准IO库函数如下:
打开关闭文件 | 输入输出流 | 文件指针操作 | 缓存相关 |
---|---|---|---|
fopen | fgetc, | fputc fseek | fflush |
fclose | fgets | fputs | ftell |
fread | fwrite | rewind | |
printf族,scanf族 |
注意FILE类型贯穿始终;
2.2fopen
2.3fclose
2.4fgtec和fputc
2.5fgtes和fputs
2.6f和fputs
2.7print和scanf
2.8fseek和ftell
2.9fflush
2.10getline
2.11临时文件
3系统调用IO
4文件系统
5进程环境
6进程控制
7信号
8线程
9高级IO
10进程间通信
11网络嵌套字