小羊手把手教你gcc gdb makefile
1. vim编辑hello.c
2. 分别查看下面gcc指令的结果
GCC交叉编译器简介:
最早为GNU C Compiler是GNU推出的功能强大、性能优越的多平台编译器,是GNU的代表作之一; 支持系统,Unix操作系统(如Linux、BSD、Mac OS X等)采纳为标准的编译器, Windows也逐渐大量采用; 支持多种计算机体系结构芯片: X86、ARM、MIPS等,并已被移植到其它多种硬件平台; 其执行效率与一般的编译器相比平均效率要高20%~30%。·支持语言,最初C语言,C++、Fortran、Pascal、Objective-C、Java、Ada、Go。也包含了这些语言的库(如libstdc++、libgcj等); 现在全称: GNU Compiler Collection,GNU编译器套件;
gcc -E hello.c -o hello.i # 预处理(生成.i文件)
gcc -S hello.i -o hello.s #汇编(生成汇编代码.s文件)
gcc -c hello.s -o hello.o #编译(生成一个.obj文件)
gcc hello.o -o hello #链接(生成一个.elf文件)
3. 查看运行结果
4. 使用gdb函数调用
编译生成可执行程序:
gcc -g hello.c -o hello
启动gdb:
gdb hello
调试命令:
run 运行程序 **list(l) ** 查看程序 break(b) 函数名 在某函数入口处添加断点 break(b) 行号 在指定行添加断点 break(b) 文件名:行号 在指定文件的指定行添加断点 info break 查看所有设置的断点 **delete 断点编号 ** 删除断点 next(n) 单步运行程序(不进入子函数) step(s) 单步运行程序(进入子函数) continue(c) 继续运行程序 print(p) 变量名 查看指定变量值 set var=value 设置变量的值 quit(q) 退出gdb。
5. gcc过程改为Makefile管理
Makefile介绍:
用Makefile文件做工程管理; 使用GNU Make工具来管理程序是每个Linux工程师必须掌握的技能; Make能够使整个程序的编译、链接只需要一个命令(make)就可以完成; Make的工作主要依赖于一个叫作Makefile的文件; Makefile文件描述了整个程序的编译,链接等规则。 其中包括:工程中的哪些源文件需要编译以及如何编译,如何最后产生我们想要得可执行文件。
vim编辑Makefile:
执行make命令:
特别致谢以下文章作者:
如何编写一个Makefile文件(手把手的教你)
[linux从零到精通] gcc和Makefile,多文件编译神器是怎么练成的
小羊手把手教你gcc gdb makefile相关推荐
- 微信小程序手把手教你实现类似Android中ViewPager控件效果
微信小程序手把手教你实现类似Android中ViewPager控件效果 前言 需求分析 头部TAB 滑动的内容部分 最终版本 尾巴 前言 在做Android开发的时候,ViewPager是开发者使用频 ...
- 验收房子时的N个小窍门 手把手教你买房子
http://news.hz.soufun.com/2010-07-22/3583104_all.html 验收房子时的N个小窍门 手把手教你买房子 买了房子领了钥匙就要验收房子的,而验收商品房质量的 ...
- 微信小程序手把手教你实现带字母索引的城市选择列表
微信小程序手把手教你实现带字母索引的城市选择列表 前言 需求分析 左边可滑动列表 滑动列表UI实现 item点击事件 右边带字母的索引条 索引条从上到下分别是定位和26个大写字母 索引条响应触摸和点击 ...
- 超详细深度学习debug指南,国外小哥手把手教你如何调试模型 | 附PPT
晓查 发自 凹非寺 量子位 出品 | 公众号 QbitAI 已经学会深度学习,但你搭建的模型为什么还跑不动,到底哪里出了问题? 看懂了教材,一到编程调试就跪,为了寻找bug的你是否曾经手足无措? 虽然 ...
- Linux~一些基本开发工具的使用(yum,vim,gcc,gdb,makefile)
目录 一.yum--安装软件 二.Vim--文本编辑器 (1).命令模式 (2).底行模式 (3).插入模式 tips:给对应用户配置sudo命令 一些注意事项 三.gcc/g++--编译器 (1). ...
- Linux——(二)环境基础开发工具(yum,vim,gcc,gdb,makefile,git)
本节目录 总述 1. yum:软件包管理工具 1.1 软件包是什么? 1.2 软件包的操作 1.2.1 查看 1.2.2 安装 1.2.3 卸载 2. vim:linux编辑器 2.1 vim基本概念 ...
- Linux命令全家桶以及vim/gcc/gdb/makefile/yum
基本指令 ls指令:对于目录,列出该目录下的所有子目录与文件:对于文件,列出文件名以及其他信息. ls -l //一行只输出一个文件 pwd指令:显示当前用户所在目录 cd指令:改变工作目录,将当前工 ...
- [小项目]手把手教你C语言哈夫曼压缩/解压缩
前言 这是大一写过的一个小项目,现在大三,重新实现了一下.这是原来的链接,可以看一下效果,思路和现在的一样. 扩展性.健壮性比原来更好,思路也更清晰了.当时只想花里胡哨,这次重心放在质量.功能上. 后 ...
- 【GDB】手把手教你用gdb调试程序(超清晰流程)
实例 我以自己曾经写的一段实际代码为例,来讲解究竟该怎么进行GDB调试. 实例地址: GitHub:https://github.com/yngzMiao/protobuf-parser-tool 实 ...
最新文章
- bootstrap跟vue冲突吗_知道微服务,但你知道微前端吗?
- CSUOJ 1341 String and Arrays
- centos 安装rar 和 unrar
- 绕月飞行维生系统进展如何?美国人准备好了吗
- Variant 与 内存泄露
- java面试排序都考哪几种排序_java算法面试题:排序都有哪几种方法?
- 结构体01:结构体的定义和使用
- 《Android游戏开发详解》一2.17 对象是独立的
- 2017蓝桥杯结果填空:迷宫
- PCDJ DEX 3 for mac(DJ混音打碟工具)
- 软件测试三五七原则,运动前必看!“三五七”原则和注意事项
- HTML基础 --- HTML基础
- Adobe flash player10安装失败的解决方法
- 对偶式与反函数_图解数字电路中标准式的对偶式和反函数求解
- 算术-几何平均值不等式的常见证明
- win7系统激活时提示0x80072F8F解决办法(亲测有效)
- c语言程序设计迷宫问题,C语言迷宫问题
- 2014中国信用卡报告
- 设计中的设计-设计的意义
- Linux学习(四)