Hacker基础之Linux篇:进阶Linux命令一

  • A+
所属分类:Hacker基础之Linux

又见面啦~


Hacker基础之Linux篇:进阶Linux命令一


我们今天开始接触一些更高级的Linux知识


Linux C程序的构建


一般在日常的IT生活中,很多时候是需要我们在源码的环境下编译安装一个软件的


这也是Open Source的一个特点,Windows中其他闭源软件是不会提供这种源码编译安装的安装方式的


那么程序的构建一般会经历一下几个阶段


Hacker基础之Linux篇:进阶Linux命令一


配置


配置的意思是检查当前环境是否满足安装该软件的依赖关系,上面那个算是特点,那这个算是一个Open Source的一个弊病


因为开源软件的作者很多时候,用的都是其他开源的<库>或者<依赖>来构建自己的程序,当我们要运行他们的软件的时候,就需要我们检查我们的系统中有没有这些<库>或者<依赖>


当然,还有设置我们一些安装必须的信息,如安装路径,需要安装的组件等等


配置完成之后,会生成makefile供第二部的make使用


一般开源软件的作者会提供一个configure文件,这个文件是软件作者通过autotool等等工具生成的


关于configure文件的生成设计到了其他工具的使用和CC++的知识,这里就不深入介绍了


我们可以通过以下命令来查看configure文件的可用选项


./configure --help


或者我们可以配置我们的程序安装路径


./configure --prefix=/usr/local/my


当然,一般安装我直接使用作者默认的配置就好了


./configure


这样程序就会自动检测我们的系统环境,同时会列出我们缺少的文件


这里我们用一个名字叫Shadow的软件来做演示


Hacker基础之Linux篇:进阶Linux命令一


我们从作者的网站下载这个软件之后,解压,进去,会发现里面的的结构大概如下


我们按照上面说的执行./configure看看


Hacker基础之Linux篇:进阶Linux命令一


之后我们就可以看到,configure文件开始检测系统环境满不满足安装需求


一般作者会在其Github上给出需要安装的依赖包,我们根据着我们的系统版本去找就可以了


比如这里,我们可以在Github上找到作者提供的以下内容


Hacker基础之Linux篇:进阶Linux命令一


因为我们这里系统是Fedora & RHEL类的,所以我们点这里就可以看到要安装的依赖了


Hacker基础之Linux篇:进阶Linux命令一


我们安装就可以了,如果作者比较懒,那我们就根据configure的提示,一个一个依赖的安装


安装依赖完成之后,我们再执行./configure就不会出现error


Hacker基础之Linux篇:进阶Linux命令一


(我悄悄换了台安装好依赖的机器~)


之后我们就可以进行下一步了,编译


Hacker基础之Linux篇:进阶Linux命令一


编译


顾名思义,编译就是将源文件进行编译链接生成可执行程序


执行我们刚刚上面那个配置之后


在文件夹会出现一个makefile文件


大家可能会说,我们刚刚明明看到了makefile文件了,ok,我们对比一下执行完configure之前和之后的区别


以下是没执行之前的,的确是有Makefile.amMakefile.in两个文件,但是,这并不是makefile


关于这两个文件如果用过automake的同学就清楚了(不过这种同学也不会来看这种文章哈哈哈)



Hacker基础之Linux篇:进阶Linux命令一


然后下面的是我们执行完./configure之后的


Hacker基础之Linux篇:进阶Linux命令一


已经多了好几个文件出来,但是最重要的是有了Makefile这个文件


我们这里就不说Makefile是怎么写的,这个比较复杂,一般要写C语言超过一年以上的同学才乱得清楚,而且对于用户来说,没必要知道程序的编译过程


然后,我们还要知道的是,Linux中make命令会自动去当前目录下查找Makefile或者makefile字样的文件去加载


一般需要链接的库或者头文件少的代码,可以手动写makefile,这样就省去了第一步<配置>的功夫


但是对于依赖比较多,而且代码结构复杂的,最好还是用程序自动生成的makefile


这里稍微介绍一个Linux下编译文件


假设我们有个C文件linux-test.c,那怎么编译它


可以用gcc命令


gcc linux-test.c -o lt


这里的linux-test.c就是我们写好的代码,然后-o之后接的是我们希望这个编译后的程序的名字,这里是lt


如果你写的是C++,要用g++命令


ok,我们继续编译,一个文件我们可以用gcc,但是一堆文件的编译,我们就要用make


现在我们有了Makefile文件,我们就可以执行make


Hacker基础之Linux篇:进阶Linux命令一


这样程序就会自动链接和编译文件了


最后等待一会,编译完成



Hacker基础之Linux篇:进阶Linux命令一


安装


安装在Linux中就简单多, 如果你做完上面的几个步骤,只用把生成的可执行程序拷贝到你想拷贝的地方即可


但是我们有个简单的命令


make install


其实install就是Makefile中的一个规则,我们可以打开Makefile来查看或者编辑,但是这是不建议的


Hacker基础之Linux篇:进阶Linux命令一


之后程序就会自动复制到了代码编写者想让它去的地方了~


之后我们的程序就算安装完成了~


Hacker基础之Linux篇:进阶Linux命令一


本文完


Hacker基础之Linux篇:进阶Linux命令一


Hacker基础之Linux篇:进阶Linux命令一


Hacker基础之Linux篇:进阶Linux命令一

Hacker基础之Linux篇:进阶Linux命令一


Hacker基础之Linux篇:进阶Linux命令一
Hacker基础之Linux篇:进阶Linux命令一

Hacker基础之Linux篇:进阶Linux命令一


  • 我的微信
  • 这是我的微信扫一扫
  • weinxin
  • 我的微信公众号
  • 我的微信公众号扫一扫
  • weinxin

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: