跟涛哥一起学嵌入式17:Makefile,学习linux及开源软件的瑞士军刀

在linux下面安装软件,我们经常使用的命令是:

./configure
make
make install

 

很多人不知道,为什么我们敲入这几个命令,我们的源码文件就开始编译成可执行程序了?而且在shell控制窗口还会有逼格地显示不断滚动的字符雨,显得特别高大上。

其实,这一切,都是makefile在背后“搞鬼”,makefile文件里,定义了我们编译源文件的规则,make命令就是根据makefile里面的规则,才将源程序文件编译成了可执行程序。

平时,在windows下面写一个程序,比如C程序,我们经常使用VC6.0、C-free等集成开发环境,简称IDE。我们新建一个C文件,编辑好我们的程序,然后点击运行按钮,程序瞬间就可以运行。

但是在linux下面,没有这么人性化的集成开发环境,如果你想写一个程序,从编辑程序、到编译、调试都要自己撸袖子自己完成,需要在shell黑漆漆的窗口下,使用命令行完成。比如我们在linux目录下,新建了一个hello.c

 

#include<stdio.h>
int main()
{
    printf("hello world!\n");
    return 0;
}

 

写好这个程序后,接着你就可以使用:

命令,就可以生成可执行程序hello了。

如果每次敲入命令你嫌麻烦,可以在hello.c的当前目录下,创建一个makefile文件,然后编辑makefile文件:

hello:hello.c

gcc -o hello hello.c

 

保存后,我们在当前目录下敲入make命令,也可以直接生成可执行程序hello了!看,makefile帮我们自动编译了程序,再也不用痛苦地敲gcc命令了!妈妈再也不用担心我晚回家吃饭了!

在这个文件中,我们定义了一个规则,用来告诉make工具如何将hello.c编译成hello可执行文件。当然,这个makefile文件是比较简单的。当我们的项目有成千上万的源文件时,我们通过makefile定义这些编译规则,然后在命令行下直接敲入make,就可以直接编译,是不是有种君临城下的感觉?

比如linux,现在已经1000多万行代码了,几万个文件,我们直接一个make,就可以看着shell窗口不断滚动的字符雨,最后编译成我们想要的linux内核镜像文件,是不是感觉很神奇?学习了makefile,你会发现,其实这并不难。通过学习,你也可以编写一个makefile,去编译一个项目工程的源代码文件!

 

学习makefile有哪些好处呢?

首先对于IT企业来说,尤其是从事linux、苹果MAC系统下面的开发,makefile是必须掌握的,就像我们在windows下面掌握VC6.0、Visual Studio一样,不然开发无从谈起。

对于项目经理、项目负责人、架构师来说,不会makefile,老板让你负责一个项目,你要搭建起来吧,要把软件框架搭好吧,不会makefile,想搭建起来够呛。

对于在校学生来说,通过makefile的学习,你会对软件构造系统,比如程序是如何编译和链接的、库的机制和原理、静态库、动态库是如何编译生成和使用的,会有一个很深刻的理解。这对你以后从事IT行业、嵌入式行业开发工作有很大的帮助:学习makefile就相当于你练了九阳神功,接着再去练乾坤大挪移,就不会感到很吃力了~

同时,作为在校学生,如果你会makefile,甚至是makefile的专家,会自己独立搭建一个项目,开展一个项目,当你面试时,当面试官看到你有这方面的黑科技能力,肯定会眼前一亮。

同时,学习了makefile了,对于我们分析开源软件,尤其是linux内核这样的复杂无比的超大型软件项目时,makefile就像一幅linux的内核地图,会引领我们去在linux几千万行的代码文件里遨游,而不会迷路。makefile就像一把瑞士军刀,一把插入linux的内核心脏!

《makefile工程实践》,一步一步从零开始,带你写一个项目的makefile,让你拥有独立搭建项目的能力。

视频教程CSDN学院正式发布,CSDN学院地址:http://edu.csdn.net/course/detail/3610

本软件包含windows和linux两种版本 1、 了解NC的用法 命令:   nc –h 技巧:   win98用户可以在autoexec.bat加入path=nc的路径,win2000用户在环境变量中加入path中,linux含有这个命令(redhat) 1、基本使用   想要连接到某处: nc [-options] hostname port[s] [ports] ...   绑定端口等待连接: nc -l -p port [-options] [hostname] [port]   参数:   -e prog 程序重定向,一旦连接,就执行 [危险!!]   -g gateway source-routing hop point[s], up to 8   -G num source-routing pointer: 4, 8, 12, ...   -h 帮助信息   -i secs 延时的间隔   -l 监听模式,用于入站连接   -n 指定数字的IP地址,不能用hostname   -o file 记录16进制的传输   -p port 本地端口号   -r 任意指定本地及远程端口   -s addr 本地源地址   -u UDP模式   -v 详细输出——用两个-v可得到更详细的内容   -w secs timeout的时间   -z 将输入输出关掉——用于扫描时   其中端口号可以指定一个或者用lo-hi式的指定范围。   例如:扫描端口   tcp扫描   C:\nc>nc -v -z -w2 192.168.0.80 1-140   net [192.168.0.80] 140 (?)   net [192.168.0.80] 139 (netbios-ssn) open   net [192.168.0.80] 138 (?)   net [192.168.0.80] 137 (netbios-ns)   net [192.168.0.80] 136 (?)   net [192.168.0.80] 135 (epmap) open   net [192.168.0.80] 81 (?) open   net [192.168.0.80] 80 (http) open   net [192.168.0.80] 79 (finger)   net [192.168.0.80] 25 (smtp) open   net [192.168.0.80] 24 (?)   net [192.168.0.80] 23 (telnet)   net [192.168.0.80] 21 (ftp)   udp扫描   C:\nc>nc -u -v -z -w2 192.168.0.80 1-140   net [192.168.0.80] 140 (?) open   net [192.168.0.80] 139 (?) open   net [192.168.0.80] 138 (netbios-dgm) open   net [192.168.0.80] 137 (netbios-ns) open   net [192.168.0.80] 54 (?) open   net [192.168.0.80] 53 (domain) open   net [192.168.0.80] 38 (?) open   net [192.168.0.80] 37 (time) open   net [192.168.0.80] 7 (echo) open 2、高级应用   1.Window用法:   (1)IE的MIME欺骗   www.try2hack..nl(是一个让初黑客技术的人去做实验的站点)   打开这个页面,有http://www.try2hack/cgi-bin/level7页面(这个网站提供了黑客的8关,过了这8关证明你开始入门了),这个页面告诉我们的浏览器不是 IE6.72,我们的操作系统不是LIUNX,我们不是从www.microsoft/ms重定向链接过去的,有病阿(这是一个题目呀,要慢慢研究),linux有IE6.72? 微软会在它的页面上放的链接?看看页面的源代码,是在服务器端 执行的perl脚本,根本无法看到,还是研究一下IE5和它通信时都告诉了它什么,抓包,我们会发现,我们的IE5告诉对方: 我是MSIE 5.0; Windows NT 5.0; .NET CLR 1.0.3705。。。。哈哈,这个cgi应该是根据这些信息知道我们不是它要求的 客户,嘿嘿,需要欺骗对方才行,用军刀来可以实现,如下做就可
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

宅学部落-王利涛

just for test

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值