标签:静态库 字符串表 math 格式 add 分享 内容 header 符号表
预处理:gcc -E hello.c -o hello.i
编译:gcc -S hello.i -o hello.s
汇编:gcc -c hello.s -o hello.o
链接:gcc hello.o -o hello
编译生成可执行文件:gcc -g hello.c -o hello
进入gdb调试界面:gdb test
部分常用指令:
查看代码(默认10行):list
设置行断点:break 5
(停在第5行)
设置条件断点:break 5 if n=6
(如果n的值为6,则程序运行到第5行停止)
执行下一行:next
继续运行:continue
帮助信息:help
开始运行程序:run
清除断点:clear
退出:quit
生成.o文件:gcc -c -I/头文件所在路径 add.c sub.c mul.c div.c
生成静态库:ar rcvs libmath.a add.o sub.o mul.o div.o
生成可执行文件main:gcc main.c -o main -I/头文件所在路径 -L. -lmath
生成.o文件:gcc -fPIC -c -I/头文件所在路径 add.c sub.c mul.c div.c
生成动态库:gcc -shared -o mymath.so add.o sub.o mul.o div.o
将文件libmath.so复制到目录/lib中
生成可执行文件main:gcc main.c -o main -I/头文件所在路径 -L.lmath
创建:vim Makefile
问题1:a.out是什么?有什么含义嘛?
问题1解决方案:a.out 是linux/unix环境下gcc编译源代码(c/c++)并连接产生的默认执行文件名。a.out是由OMAGIC, NMAGIC, QMAGIC, 或者 ZMAGIC发展过来的一种可执行文件格式。一个典型的a.out文件由一下7部分组成:exec header:文件头、text segment:代码段、data segment:数据段、text relocations:代码重定向
、data relocations:数据重定向、symbol table:符号表、string table:字符串表。
问题2:链接时不成功,报错。
问题2解决方案:要将包括4个函数在内的所有.o文件都放到bin文件夹中才可以。
问题3:运行Makefile时报错。
问题3解决方案:书写Makefile时要用Tab空行后再书写命令。
这周的学习困难不少,收获也是挺大的。知道了一些在Linux下c语言文件处理的操作,以及一些相关知识。新的学期新的挑战,继续加油,努力学习。
# 2018-2019-1 20165206 《信息安全系统设计基础》第1周学习总结
标签:静态库 字符串表 math 格式 add 分享 内容 header 符号表
原文地址:https://www.cnblogs.com/brs666/p/9693504.html