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相关推荐

  1. 微信小程序手把手教你实现类似Android中ViewPager控件效果

    微信小程序手把手教你实现类似Android中ViewPager控件效果 前言 需求分析 头部TAB 滑动的内容部分 最终版本 尾巴 前言 在做Android开发的时候,ViewPager是开发者使用频 ...

  2. 验收房子时的N个小窍门 手把手教你买房子

    http://news.hz.soufun.com/2010-07-22/3583104_all.html 验收房子时的N个小窍门 手把手教你买房子 买了房子领了钥匙就要验收房子的,而验收商品房质量的 ...

  3. 微信小程序手把手教你实现带字母索引的城市选择列表

    微信小程序手把手教你实现带字母索引的城市选择列表 前言 需求分析 左边可滑动列表 滑动列表UI实现 item点击事件 右边带字母的索引条 索引条从上到下分别是定位和26个大写字母 索引条响应触摸和点击 ...

  4. 超详细深度学习debug指南,国外小哥手把手教你如何调试模型 | 附PPT

    晓查 发自 凹非寺 量子位 出品 | 公众号 QbitAI 已经学会深度学习,但你搭建的模型为什么还跑不动,到底哪里出了问题? 看懂了教材,一到编程调试就跪,为了寻找bug的你是否曾经手足无措? 虽然 ...

  5. Linux~一些基本开发工具的使用(yum,vim,gcc,gdb,makefile)

    目录 一.yum--安装软件 二.Vim--文本编辑器 (1).命令模式 (2).底行模式 (3).插入模式 tips:给对应用户配置sudo命令 一些注意事项 三.gcc/g++--编译器 (1). ...

  6. 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基本概念 ...

  7. Linux命令全家桶以及vim/gcc/gdb/makefile/yum

    基本指令 ls指令:对于目录,列出该目录下的所有子目录与文件:对于文件,列出文件名以及其他信息. ls -l //一行只输出一个文件 pwd指令:显示当前用户所在目录 cd指令:改变工作目录,将当前工 ...

  8. [小项目]手把手教你C语言哈夫曼压缩/解压缩

    前言 这是大一写过的一个小项目,现在大三,重新实现了一下.这是原来的链接,可以看一下效果,思路和现在的一样. 扩展性.健壮性比原来更好,思路也更清晰了.当时只想花里胡哨,这次重心放在质量.功能上. 后 ...

  9. 【GDB】手把手教你用gdb调试程序(超清晰流程)

    实例 我以自己曾经写的一段实际代码为例,来讲解究竟该怎么进行GDB调试. 实例地址: GitHub:https://github.com/yngzMiao/protobuf-parser-tool 实 ...

最新文章

  1. bootstrap跟vue冲突吗_知道微服务,但你知道微前端吗?
  2. CSUOJ 1341 String and Arrays
  3. centos 安装rar 和 unrar
  4. 绕月飞行维生系统进展如何?美国人准备好了吗
  5. Variant 与 内存泄露
  6. java面试排序都考哪几种排序_java算法面试题:排序都有哪几种方法?
  7. 结构体01:结构体的定义和使用
  8. 《Android游戏开发详解》一2.17 对象是独立的
  9. 2017蓝桥杯结果填空:迷宫
  10. PCDJ DEX 3 for mac(DJ混音打碟工具)
  11. 软件测试三五七原则,运动前必看!“三五七”原则和注意事项
  12. HTML基础 --- HTML基础
  13. Adobe flash player10安装失败的解决方法
  14. 对偶式与反函数_图解数字电路中标准式的对偶式和反函数求解
  15. 算术-几何平均值不等式的常见证明
  16. win7系统激活时提示0x80072F8F解决办法(亲测有效)
  17. c语言程序设计迷宫问题,C语言迷宫问题
  18. 2014中国信用卡报告
  19. 设计中的设计-设计的意义
  20. Linux学习(四)

热门文章

  1. java反射总结(框架灵魂)
  2. [JZOJ 5909] [NOIP2018模拟10.16] 跑商(paoshang) 解题报告 (圆方树)
  3. 幽灵键鼠常用方法调用
  4. Cookie没有HttpOnly标志设置 -- Cookie没有安全标志设置
  5. 阿里云服务器绑定域名!
  6. ubuntu 设置swap分区
  7. Autumn is coming
  8. 上市商业银行手机银行场景建设专题分析
  9. python django校园二手商城
  10. 单反相机的照片不见了如何恢复