【LINUX 基础命令2】

一 . makefile :实现自动化编译


文件名称必须是makefile

1) sudo apt install make 安装make命令(make命令执行 只认makefile文件)
2)编辑 C源文件
3)编辑makefile文件

make 命令执行出问题(error .warning)
排查:
1.c语言代码实现是否存在语法问题
2.makefile 文件 格式

在这里插入图片描述
在这里插入图片描述

二 . LINUX调试命令

linux环境下如何进行C代码调试
gcc -o main main.c -g(向main.c文件中添加调试信息)

gdb main : 开启调试

l : 显示代码

b +行号: 下断点

info b : 显示断点信息

delete 断点编号 :断点删除

n :单步执行

r : 启动程序

p +变量: 打印当前变量的值

s : 进入函数 当前代码执行到函数调用处 ,输入S, 切入到函数内部执行

finish : 跳出函数

break +函数名: 在函数入口地址加断点

c/continue :继续 从一个断点跳转到另外一个断点

q : 退出调试

ptype 变量 :查看变量类型

l+ num : 查看num行上下位置的源代码

set follow-fork-mode child :跟踪子进程
show follow-fork-mode 查看正在跟踪的进程是父还是子

三 . 静态库的建立

1)先将.c文件转成.o文件
gcc -c add.c mul.c(main函数不转成.O文件)
2) 打包成静态库文件libfoo.a
ar crv libfoo.a add.o mul.o
3) 编译连接成可执行文件
gcc -o main main.c -L. -lfoo
4) ./main
静态库主函数更改的情况:
在这里插入图片描述
入上图,生成执行文件后,再更改主函数后执行gcc -o main main1.c -L. -lfoo 生成更改后主函数。

四 . 共享库的建立

1)先编辑 .c文件ls

gcc -c min.c gcc -c max.c
2)将生成的.o文件共享库
gcc -shared -fPIC libfoo.so -o min.o max .o
3)在生成libfoo.so同时必须将共享库放在/usr/bin 目录里
4)编辑main.c 文件 直接使用min函数和max函数
5)链接共享库,生成可执行文件
gcc -o main main.c -lfoo
6) ./main

共享库和静态库的区别:
静态库在链接时将所用到的函数包含到最终生成的可执行文件中。共享库不会包含到可执行文件中,只做标记,在运行时才会动态加载,所以共享库体积小,但运行速度较静态库慢一些。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值