前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Hacker基础之Linux篇:进阶Linux命令一

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

作者头像
用户1631416
发布2018-07-25 11:49:18
5590
发布2018-07-25 11:49:18
举报
文章被收录于专栏:玄魂工作室玄魂工作室

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

Linux C程序的构建

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

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

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

配置

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

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

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

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

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

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

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

./configure --help

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

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

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

./configure

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

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

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

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

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

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

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

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

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

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

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

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

编译

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

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

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

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

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

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

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

已经多了好几个文件出来,但是最重要的是有了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

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

最后等待一会,编译完成

安装

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

但是我们有个简单的命令

make install

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

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

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

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2018-05-22,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 玄魂工作室 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档