在Linux中Makefile扮演一个非常重要的角色,我们可以以Linux为平台在上面编写我们需要的C程序代码,

对于C语言来说,Linux是一个非常好的平台来学习、使用、调试、验证C代码的平台,其强大的Vim编辑器,还

有强大的gcc编译工具和gdb的调试工具,对于我们学习C语言都是一个非常重要的工具,我们可以非常清晰的看

清C语言代码的执行过程,可以通过gdb调试工具观察代码的执行方法等等优点,我在这就不一一列举了。

使用 sp max.c   建立一个新的文件:

gcc编译工具:

  I(i)  在光标前插入

  A(a)   在光标后插入

  O    原行上新建一行

  dd  删除一行

   x  删除代码中的一个

  set nu  显示代码行号

  set nonu  取消显示行号

  sp max.c 在源文件中新建一个文件    eg:我在只有一个文件的函数如test.c中新建一个max.c文件,把

       相关的代码放在其中直接在主函数中调用

  ctrl + w + ↑    就是如同上面新建的文件中移动,从一个文件的代码移动到上面一个文件中

  ctrl + w + ↓    就是如同上面新建的文件中移动,从一个文件的代码移动到下面一个文件中

  数字  dd     就是从光标处剪贴几行

  eg: 9 dd    就是从光标处剪贴9行

  p      就是把复制的内容粘贴

  yy   复制一行

  u  撤销上一步操作

  Ctrl+ r  恢复撤销

gg   光标快速回到首部

GG   光标快速回到尾部

  objdump -h test.out    显示文件详细信息

  objdump -s test.out    以十六进制显示文件

  objdump -d test.out    以汇编形式显示文件

:wqa   //保存全部并退出

(1)  gcc text.c -o text.out      //编译text.c 并生成text.out可执行文件

(2)    gcc text.c max.c -o text.out      //编译text.c与max.c 并生成text.out可执行文件

./text.out      //执行text.out文件

执行结果如图所示:

gdb调试工具

  start  开始调试

  p       打印

    eg: p a    打印变量a的值

eg: p *a    打印指针变量*a的值

  n        下一行

  bt       堆栈

  l         (list)列出源代码

  break      设置断点调试

    eg: break  12   在十二行设置断点

  s               (step)进入下一级函数中

  f  1             切换到1堆栈中

  x/6d +地址   从那个地址开始连续打印6个值

  gcc -g text.c -o text.out    //编译text.c文件并生成可执行文件text.out  -g就是生成的可执行文件

支持gdb调试

Makefile函数

新建立一个Makefile文件, vim   Makefile   (文件名开头字母一定要大写)

test.out: t1.0  t2.o main.c

Tab gcc  t1.0  t2.o main.c -o  test.out

t1.o : t1.c

Tab  gcc -c t1.c

t2.o : t2.c

Tab  gcc -c t2.c

注:Tab代表用Tab填充空格

  make执行以下就行了

使用Makefile更方便多用户协调编写代码

  gcc -c max.c  //编译生成.o文件  -c就是支持生成.o文件必须要加的gcc参数

  gcc text.c -o text.i -E  //预处理命令生成.i文件

  gcc text.c -o text.s -S  //编译生成.s汇编文件

Linux中的Makefile的更多相关文章

  1. [转]Linux中configure/makefile

    本文教你如何使用autoconf.automake等来制作一个以源代码形式(.tar.gz)发布的软件.并可在执行configure时使用自定义参数. 一.概述和基础知识 在Linux下得到一个以源代 ...

  2. linux中Makefile文件相关内容

    第一章.概述什么是makefile?或许很多Winodws的程序员都不知道这个东西,因为那些Windows的IDE都为你做了这个工作,但我觉得要作一个好的和professional(专业)的程序员,m ...

  3. GNU linux 中makefile那点事

    转自陈皓: http://bbs.chinaunix.net/viewthread.php?tid=408225 概述—— 什么是makefile?或许很多Winodws的程序员都不知道这个东西,因为 ...

  4. linux 下如何 makefile

    本文目的: 尝试着把makefile讲解清楚.非原创,仅仅是学习笔记和备忘录之用. makefile 的目的和好处: 一个工程中的源文件不计数,其按类型.功能.模块分别放在若干个目录中,makefil ...

  5. Linux 中如何卸载已安装的软件(转载)

            Linux 中如何卸载已安装的软件. Linux软件的安装和卸载一直是困扰许多新用户的难题.在Windows中,我们可以使用软件自带的安装卸载程序或在控制面板中的“添加/删除程序”来实 ...

  6. Linux中的动态库和静态库(.a/.la/.so/.o)

    Linux中的动态库和静态库(.a/.la/.so/.o) Linux中的动态库和静态库(.a/.la/.so/.o) C/C++程序编译的过程 .o文件(目标文件) 创建atoi.o 使用atoi. ...

  7. Linux编程(3) MakeFile

    1. 在Linux中,make工具可以维护程序模块关系和生成可执行程序.它可根据程序模块的修改情况重新编译链接生成中间代码或最终的可执行程序.执行make命令,需要一个名为Makefile的文本文件, ...

  8. Linux中下载、解压、安装文件

    一.将解压包发送到linux服务器上: 1.在windos上下载好压缩包文件后,通过winscp等SFTP客户端传送给linux 2.在linux中通过wget命令直接下载 #wget [选项] [下 ...

  9. 【转】Linux中如何安装.rpm、.tar、.tar.gz和tar.bz2

    我以下面三个包为例:(三个包都在/etc/opt下)A.example-1.2.3-1.rpmB.example-1.2.3-1.tarC.example-1.2.3-1.tar.gz 1.对于rpm ...

随机推荐

  1. C#面向对象(四):其他面向对象知识

    前文链接: C#面向对象(一):明确几个简单的概念作为开胃菜 C#面向对象(二):封装和继承 C#面向对象(三):多态 今天是这个系列的收尾文章了,来谈谈其他面向对象知识. 1.嵌套类 1.1概念 在 ...

  2. 纯css 更改原生raiod与 checkbox的样式

    原文地址: .checkbox input[type=checkbox], .checkbox-inline input[type=checkbox], .radio input[type=radio ...

  3. Gradle的快速入门

    1.基础知识: Gradle提供了:构建项目的框架.但是其中起作用的是Plugin. Gradle在默认情况下提供了很多常用的Plugin.例如:构建Java的Plugin.还有war.Ear等. G ...

  4. [C++] 动态规划之矩阵连乘、最长公共子序列、最大子段和、最长单调递增子序列、0-1背包

    一.动态规划的基本思想 动态规划算法通常用于求解具有某种最优性质的问题.在这类问题中,可能会有许多可行解.每一个解都对应于一个值,我们希望找到具有最优值的解. 将待求解问题分解成若干个子问题,先求解子 ...

  5. PostgreSQL 日常数据库维护工作

    日常数据库维护工作定期备份,定期”清理“数据库,周期性的日志文件管理check_postgres可用于检测数据库的健康并报告异常情况 1. 日常清理 PostgreSQL数据库要求周期性的清理维护.对 ...

  6. Vue2.0+Webpack+Element+Axios+vueRouter技术栈使用过程总结

    搭建项目架构 目采用Webpack+Vue-router的架构方式,开始安装(一切操作都在windows系统上完成) 1.按Win+R,然后在文本框中输入cmd,回车打开命令行,输入vue-cli安装 ...

  7. dtgrid 手动条件删除表格中的某一行

    dtgrid 手动条件删除表格中的某一行 var grid = $.fn.DtGrid.init(dtGridOption); $(function () { grid.load(); }); fun ...

  8. 获取字符串长度函数length()和hengthb()

    oracle获取字符串长度函数length()和hengthb() lengthb(string)计算string所占的字节长度:返回字符串的长度,单位是字节 length(string)计算stri ...

  9. tornado带签名的cookie原理

  10. NLTK与NLP原理及基础

    参考https://blog.csdn.net/zxm1306192988/article/details/78896319 以NLTK为基础配合讲解自然语言处理的原理  http://www.nlt ...