23-10-03总结[linux-c]

23-10-03总结[linux-c]

PS:个人感觉在Linux上面写C++/C还是很有趣的

gcc编译过程:

​ .c —> .i—> .s—> .o—> a.out

​ -e -s -c -o

命令:gcc [file] -o [target] (如果没有target,则默认生成a.out)

gcc参数有-g时会包含调试信息

静态库和动态库链接(变成库的好处:防止客户拿到核心代码)

静态库:可移植性强,兼容性好,但是文件体积大

​ 静态库要求:lib开头,".a"结尾

​ step1:生成对应的.o文件

​ step2:用打包工具ar把.o文件打包为.a文件

ar rcs libxxx.a *.o		#r更新	c创建		s索引

🐉 需要把头文件和.a文件一起发给客户

编译命令:gcc [测试文件] -L./ -I./ -l[库] -o [target]

​ (-L 所连接的库在哪里 -I 表明头文件在当前目录 -l 库名,要去掉前缀和后缀)

动态库:依赖动态库,简化升级,依赖版本严重

​ 动态库要求:lib开头,“.so”结尾

​ step1:生成目标文件,要加-fPIC

gcc -fPIC -c add.c

​ step2: 生成共享库,要加-shared

gcc -shared *.o -o libxxx.so

🐲 编译命令和静态库相同 (但是需要配置环境变量,有点麻烦)

GDB调试工具

1.启动gbd:gdb [file]

2.设置参数:set args [ ] [ ] …

3.查看参数:show args

4.执行,停在第一个断点处(如果有):run

5.向下开始执行一行:start

6.显示10行代码:list

7.设置断点

1.b 10:在第十行设置断点

2.b [func]在函数入口设置

3.b [file]:9 if value == 10 条件断点

8.查看断点:i b

9.删除断点:delete [op]

10.下一步:next(n)

11.继续(直到碰到另外一个断点):continue

Makefile(主要用于维护和减少编译时间)

一条规则:

目标:依赖文件列表

命令列表

依赖文件:用于输入的文件

变量: a=b(放在文件最前面)

自动变量:$@:目标 $<:第一个条件 $^:所有条件

如果文件夹里面仅有.c和.o文件,下面的这个Makefile就不错

SRC=$(wildcard ./*.c)

OBJS=$(patsubst %.c,%.o,$(SRC))

target=test

$(target):$(OBJS)
	gcc $^ -o $@

%.o:%.c
	gcc -c $< -o $@

.PHONY:clean
clean:
	rm -rf $(OBJS) $(target)
⛨命令:make
  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值