linux学习笔记一(gcc)

1、gcc
gcc -E //预处理 test.c -o test.i -m32(32位机器)//#define #include //
gcc -S //编译 **.s
gcc -c //汇编 **.o .o文件 可重定位的目标文件
//链接
readelf 查看elf文件 -h查看文件的头 test.o
-a列出所有信息
gcc test.c -Wall (显示所有警告)

file test.i
vim test.i
预处理:
词法分析 lex
语法分析
语义分析
中间代码

这里写图片描述
PE windows下可执行文件的格式
ELF liux 下可执行文件的格式
虚拟内存空间大小为4个G
nm 看符号表
main 函数运行起来后第一个函数是_start
ABI 二进制接口不一样
strip main 删除符号信息,给文件瘦身
objdump -dS main 查看符号main函数的符号信息
volatile(阻止编译优化)
o1 o2 o3 优化最高等级(省略很多东西)
2、1)liux调试器-gdb使用:
调试要加-g选项
l(list)
l num
l function
设置断点 b 19(行)或b 函数名
b 行号 if i==9(条件) 设置条件断点
i b 查看设置的断点信息
r 执行
n 执行下一步(F10)
whatis 查看类型
print 打印变量的值
d 断点编号 删除断点
finish 执行到当前函数的返回
gdb a.out 调试
2)valgrind a.out 检测程序内存有没有泄露
3)top 看内存使用情况
shift >下翻
shift < 上翻

bt 函数调用栈
这里写图片描述
调试core程序
1、gcc -g;//重新编译
2、ulimit -c unlimited;//让它的大小不受限制
3、./a.out
4、gdb a.out core.XXX//运行到core的地方
gcc -v显示所有详细信息

猜你喜欢

转载自blog.csdn.net/adzn1/article/details/79806004
今日推荐