Linux中的Makefile
在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的更多相关文章
- [转]Linux中configure/makefile
本文教你如何使用autoconf.automake等来制作一个以源代码形式(.tar.gz)发布的软件.并可在执行configure时使用自定义参数. 一.概述和基础知识 在Linux下得到一个以源代 ...
- linux中Makefile文件相关内容
第一章.概述什么是makefile?或许很多Winodws的程序员都不知道这个东西,因为那些Windows的IDE都为你做了这个工作,但我觉得要作一个好的和professional(专业)的程序员,m ...
- GNU linux 中makefile那点事
转自陈皓: http://bbs.chinaunix.net/viewthread.php?tid=408225 概述—— 什么是makefile?或许很多Winodws的程序员都不知道这个东西,因为 ...
- linux 下如何 makefile
本文目的: 尝试着把makefile讲解清楚.非原创,仅仅是学习笔记和备忘录之用. makefile 的目的和好处: 一个工程中的源文件不计数,其按类型.功能.模块分别放在若干个目录中,makefil ...
- Linux 中如何卸载已安装的软件(转载)
Linux 中如何卸载已安装的软件. Linux软件的安装和卸载一直是困扰许多新用户的难题.在Windows中,我们可以使用软件自带的安装卸载程序或在控制面板中的“添加/删除程序”来实 ...
- Linux中的动态库和静态库(.a/.la/.so/.o)
Linux中的动态库和静态库(.a/.la/.so/.o) Linux中的动态库和静态库(.a/.la/.so/.o) C/C++程序编译的过程 .o文件(目标文件) 创建atoi.o 使用atoi. ...
- Linux编程(3) MakeFile
1. 在Linux中,make工具可以维护程序模块关系和生成可执行程序.它可根据程序模块的修改情况重新编译链接生成中间代码或最终的可执行程序.执行make命令,需要一个名为Makefile的文本文件, ...
- Linux中下载、解压、安装文件
一.将解压包发送到linux服务器上: 1.在windos上下载好压缩包文件后,通过winscp等SFTP客户端传送给linux 2.在linux中通过wget命令直接下载 #wget [选项] [下 ...
- 【转】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 ...
随机推荐
- openfl更新2.0后,android输入法又不能输中文了
今天手贱更新了一下openfl,fd里面又各种报错.最伤心的是,之前修改MainView.java输入中文的方法现在居然失效了.还好这段时间研究c2dx,总算是能读能懂修改的那段代码,捣鼓了一下午,算 ...
- springmvc 加载静态文件失败
header.jsp,部分代码 <head> <title>QA|VIS_PLATFORM</title> <meta content="width ...
- laravel DB::raw() DB::RAW()的用法
laravel中的 DB::raw() 和DB::RAW()是同一种功能;用法如下 public function test() { $real = 66;]); $res = \ai\Models\ ...
- Regexp:教程
ylbtech-Regexp:教程 1.返回顶部 1. 正则表达式 - 教程 正则表达式(Regular Expression)是一种文本模式,包括普通字符(例如,a 到 z 之间的字母)和特殊字符( ...
- Python中try...except...else的用法
Python中try...except...else的用法: try: <语句>except <name>: <语句> #如果在try ...
- maven如何过滤占位符
今天遇到一个问题,就是properties文件中赋值用的这种形式${xxx},真正的值是配置在pom的profile中,但是未生效. 后来找到原因,原来是pom中少了一段代码: <build&g ...
- SqlServer——事务一进阶之锁的概念(SqlServer技术内幕 T-SQL程序设计 第九章)
一.事务的概念及ACID特性 对于单独一条SQL语句,数据库会隐式的将其作为事务,即该SQL语句要么执行成功,要么失败(相当于不执行),而我们通常说的事务就是将多条SQL语句放在 begin ...
- leetcode633
用开方的思想来解题. bool judgeSquareSum(int c) { int h = pow(c, 0.5); ; i <= h; i++) { ), 0.5); if (left - ...
- x264的一些参数设置对编码效率的影响
i_luma_deadzone[0]和i_luma_deadzone[1]分别对应inter和intra, 取值范围1~32,测试可以得知,这连个参数的调整可以对数据量有很大影响,值越大数据量相应越少 ...
- Android Studio 第一次配置及其使用
第一次使用Android Studio时你应该知道的一切配置 http://www.cnblogs.com/smyhvae/p/4390905.html gradle V2.10 版: http:// ...
