gcc参数 & makefile语法 & gdb调试

gcc编辑参数:

​ -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

​ 在执行程序时需要将动态库的路径设置到系统环境变量中,或将动态库复制到可访问的路径中。

makeflie

​ 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

你可能感兴趣的:(笔记,linux,c语言)