C程序以文件为单位进行编译
1、 编译器GCC:可多文件编译
2、 调试器GDB
3、 工程管理器——Make:多文件操作(灵活性高,效率高)
4、 脚本——Shell:程序可直接执行,不需编译(顺序结构)
源文件.c——>预处理.i——>编译.o(二进制)——>链接——>可执行.exe或.out(Linux环境下)[二进制]
注:gcc规定使用main函数,在硬件开发中使用Main函数
编程格式:
单目运算符前后用空格隔开,双目运算符不隔;
循环体语句按4个空格缩进;
文件命令用字母开头,不得用数字开头;
注释分为两种:1、//表示 2、/xxx/表示;
Int与return 0一起使用
gcc编译器的基本用法:
gcc [options] [filenames]
options:编译器所需要的编译选项
filenames:要编译的文件名
gcc [-Wall] [-O1…3] [-g] [-o name] file…
-Wall:打开所有警告项;
-O:设置优化级别,O0表示关闭优化功能;
-g:将调试信息编译到目标文件中;
-o name:指定输出文件的名称是name,否则默认为a.out;
-E:预处理;gcc -E hello.c(不生成任何输出文件)
-c:只编译,生成目标文件,不连接成可执行文件;gcc -c hello.c相当于gcc -c hello.c -o hello.o
-DPI=3.14159:宏定义PI=3.14159;
-UPI:取消宏定义PI
-Idirname:将dirname所指出的目录加入到程序头文件目录列表中;
-Ldirname:将dirname所指出的目录加入到库文件目录列表中;
-lname:链接名为libname.a;
例如:-lm表示连接名为“libm.a”的数学函数库
-static:静态链接库文件
静态库后缀名为.a
动态库后缀名为.so
静态库的创建:
vim 源文件.c
gcc -c 源文件.c
ar rcs 静态库名 目标文件1 目标文件2
注rc:静态库不存在,就创建该库文件
s:更新库文件
使用:gcc -o file file.c –L. -lname
ar -t libname.a 查看库
ar -d libname.a add.o 从库中删除add.o文件
ar -dv libname.a add.o 从库中删除add.o文件并提示删除信息
ar -xv libname.a add.o 从库中提取add.o文件(相当于复制)
动态库的创建:
gcc -shared -fPIC -o库名.so 源文件.c
使用:gcc 源文件.c ./库名.so –o 可执行文件名