gcc四步骤
预处理、编译、汇编、链接
-
最基本操作
vi hello.c gcc hello.c -o hello ./hello
-
-I 目录 指定头文件目录,注意-I和目录之间没有空格
mkdir inc mv hello.h inc gcc -I./inc hello.c -o hello ./hello
-
运行家目录下的
gcc hello.c -o a.out -I ~/inc ./a.out
-
-
-c :只做预处理、编译、汇编,得到二进制文件!!!
-
-g:编译时添加调试文件,主要是支持gdb调试
gcc hello.c -o hello1 gcc hello.c -o hello2 -g
-
gdb:调试
file hello1(生成的可执行文件) list (源码没列出来) file hello2(生成的可执行文件中有调试文件) list (会将源码列出来) b 5 (断点打在第五行) r(运行) run (运行) q (退出)
-
-Wall:显示所有警告信息
-
-D:向程序中"动态"注册宏定义
#include "hello.h" #ifdef HELLO #define HI 20 #endif int main(int argc,char *argv[]){ int b =10; int a =10; printf("----------%d\n",HI); return 0; }
操作指令:
gcc hello.c -D HELLO ./a.out
创建静态库
静态库:对空间要求较低,而时间要求较高的核心程序中
动态库:对时间要求较低,对空间要求较高。
-
将.c 生成.o文件
gcc -c add.c -o add.o
-
使用ar 工具制作静态库
ar rcs libmymath.a add.o div1.o sub.o
-
编译静态库到可执行文件中:
gcc test.c lib库名.a -o a.out
头文件防卫:
防止头文件被重复包含
#ifdef _HEAD_H_
#define _HEAD_H_
....
#endif
动态库制作及使用
-
将.c 生成.o (生成与位置无关的代码 -fPIC)
gcc -c add.c -o add.o -fPIC
-
使用gcc -shared 制作动态库
gcc -shared lib库名.so add.o sub.o div1.o
-
编译可执行程序时,指定所使用的动态库。
-l:指定库名
-L:指定库路径
gcc test.c -o a.out -lmymath -L./lib
-
运行可执行程序
./a.out