5.21训练记录

gcc/g++编译器
.c的c文件可用gcc或者g++编译
.cc和.cpp的c++文件,应该采用g++编译
-c 编译源文件
-o 输出目标文件
-g 目标文件中产生调试信息,用于gdb调试
-Wall 打开所有类型的警告
-S 只编译不汇编,生成汇编代码
-E只进行预编译,不做其他处理

创建动态库
gcc -fPIC -Wall -c ted.c
gcc -shared -o libted.so ted.o
gcc -o main main.c -ladd
运行main前,需将库文件拷贝到/usr/lib 下

创建静态库
gcc -c ted.c 编译生成ted.o目标文件
ar crsv libted.a ted.o 生成库文件libted.a,再将库文件libadd.a拷贝到/lib下
gcc -o main main.c -ladd

gdb 用来调试程序
步骤如下:
gcc -o ted -Wall ted.c -g 编译的时候一定要加-g
gdb ted 进入调试
l 显示代码
b 3 在第三行设置断点
tb 5 临时断点设置
info b 查看断点的信息
disable 1 (d 1) 暂时停止断点1的作用
enable 1 重启断点1
b 3 if i3 自带条件的断点的设置
condition 3 i
1 将断点的条件改变
x<n/f/u> a 查看内存变量的内容,n为显示内存的长度,f表示显示的格式,u表示看的单位 a表示起始地址 x <20xb> &dre 看20个字节长度,16进制显示
r 运行
n 下一步 不进入函数
p 显示某一变量的值
s 单步进入函数
c 运行到断点
q 退出
finish 程序运行直到结束
bt 查看调用堆栈
set args 设定传入的参数,在进入gdb调试开始的时候
echo $? 检查程序最终的返回值
ulimit -a 显示linux中一些限制开关 可根据需要改变
ulimit -c unlimited core文件大小不限制 zhih之后就可以查看崩溃文件core

makefile:
简陋模式:
main.exe:main.o std.o
	gcc -o main.exe main.o std.o
main.o:main.c
	gcc -c main.c
std.o:std.c
	gcc -c std.c

伪目标:后面没有依赖项
	.PYONY	
	.PYONY:clean
	clean:
		rm -rf main.o std.o main
		清理产生的代码
高级模式:
	SOURCES = $(wildcard *.c)
	OBJS:=$(patsubst %.c,%.o,$(SOURCES))
	ELF:=main
	CC:=gcc
	CFLAGS:=-g -Wall
	$(ELF):$(OBJS)
		gcc $^ -o $@
	.PYONY:clean
	clean:
		rm -rf $(OBJS) $(ELF)
		OBJS 自定义变量,自己设定的,用来代指一堆源文件,后面的是字符串替换函数:$(patsubst 要查找的子串,替换后的目标子串,源字符串)把 SOURCES 中'.c' 替换为'.o' ,%匹配 1 或多个任意字符串
		ELF 自定义变量,用来代指目标文件
		^ 自动变量,当前规则的所有以来文件
		@ 自动变量 当前规则的目标文件
		隐含规则://*.o 文件自动依赖 *.c 或 *。cc文件,所以类似部分就自动省略了。
		CC 预定义变量,系统确定好一个默认值,有多种类型,可以自己更改(这里把编译器改成gcc)
		CFLAGS 预定义变量 ,编译器选项,-g调试 -Wall 警告
		SOURCES = $(wildcard *.c)把当前目录下所有'.c'文件存入变量 SOURCES 里

makefile:编译多个目标
SRCS = open1.c open2.c
TARGETS = $(SRCS:%.c=%)
all : $(TARGETS)
@for i in $(TARGETS);do gcc -o i {i} i{i}.c;done
.PHONY:clean
clean:
rm $(TARGETS)
for i in $(TARGETS)逐个抽取,后面一句逐个生成目标

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值