<4>Linux-文件操作命令(3)
4.1 vi环境定制
- set nu:添加行号显示
- set nonu:取消行号显示
- set autoindent:自动缩进
- set noautoindent:取消自动缩进
gcc编译工具
- -o: 指定目标文件的名称
- -g:使生成的可执行程序中包含debug信息
- -c:只编译不链接
- -E:只做预处理
- -S:由C翻译成汇编
4.2 gcc helloworld.c ---> a.out 过程
1) 预编译 -E
处理所有的伪指令(以#开头),它会把头文件的内容展开到当前 文件中来。
gcc helloworld.c -E -o helloworld.i
2)编译 -S
由C翻译成汇编语言
gcc helloworld.i -S ---->helloworld.s
3)汇编 -c
由汇编语言翻译成目标代码
gcc helloworld.s -c ---->xxx.o [od xxx.o]可查看二进制文件
4)链接
由多个目标代码文件生成可执行文件
gcc helloworld.o ----->a.out
在实际开发中,为了使代码结构更合理,更方便运行代码的重用,通常采用将主函数和其他函数放在不同文件中的方法。
除主程序外,每个函数都有函数声明(函数头)和函数实现(函数体)两部分组成。
函数的声明一般放在头文件.h中,而函数的定义文件放在实现文件中.c。[头文件中还可以放宏、自定义类型,类型别名,头文件]
4.3 使用gcc编译多个源文件
进一步理解头文件
#include <....>:系统路径找
/usr/lib/gcc/i686-linux-gnu/4.6/include
/usr/local/include
/usr/include/i386-linux-gnu/
/usr/include/
问题一:如果.c和.h不在同一个目录下,如何处理?
1.c文件中
#include "相对路径/xxx.h"
2 .c文件中
#include “xxx.h”
gcc -I相对路径
3 xxx.h扔到系统路径下去(不推荐)
问题二:什么情况下会出现头文件的重复包含?
A
: #include<a.h>
#include<a.h>
B: #include<a.h>
#include<b.h>
如果a.h和b.h中又同时包含了相同的一个头文件就会出现重复包含。