-v/–version: 查看gcc的版本信息
-I: 指定编译时的头文件路径
-L: 指定库文件路径
-c: 将汇编文件生成二进制文件,即生成.o中间文件
-o: 生成指定的目标文件, 注:-o与-c不可一起使用
-D: 编译时定义宏并传入到程序中
-g: 编译时需要在目标文件中生成调试信息,则gdb调试时需要用到
-Wall: 显示编译过程中产生的警告信息
-On: 优化代码,n是优化级别:1、2、3,最高是3
示例:gcc -I./include -DDEBUG=1 -Wall -O3 add.c dlv.c mul.c main.c -o app
生成.o文件:gcc -c -I/include add.c dlv.c mul.c
将.o文件打包成静态库libcalc.a:ar -rsc libcalc.a add.o dlv.o mul.o
引用静态库:gcc -I./include main.c -L./ -lcalc -o app
生成.o文件:gcc -c -fPIC -I./include add.c dlv.c mul.c
生成.so动态库:gcc -shared -I./include add.o dlv.o mul.o -o libcalc.so
引用动态库:gcc -I./include main.c -lcalc -o app
在执行程序时需要将动态库的路径设置到系统环境变量中,或将动态库复制到可访问的路径中。
makefile文件的规则如:
# 以‘#’号开头表示注释
#可以定义变量
dir = /home/test
#目标: 依赖条件
# 执行命令 #执行命令前面必须以tab键开头
#如:
app: main.o #app即为目标,main.o为依赖条件
gcc main.o -o app #执行的命令
有如下源码:
root@root-virtual-machine:~/gcc_test/libTest$ tree
.
├── add.c
├── dlv.c
├── include
│ └── head.h