百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 编程网 > 正文

[Linux探索之旅] 第四部分第五课:源码编译,安装便利

yuyutoo 2025-02-15 01:47 1 浏览 0 评论

内容简介

1、第四部分第五课:源码编译,安装便利

2、第四部分第六课:DNS和域名,一探究竟

源码编译,安装便利

这一课相对轻松,毕竟刚跨年(2015-2016)么,新年怎么能让大家一个头两个大呢~ 小编怎么可能这么坏呢?小编是这样的人吗?(是啊 -_-#)。

之前的课程(【Linux探索之旅】第二部分第七课:软件安装,如虎添翼)中,我们已经了解过Ubuntu这个Linux的发行版下安装软件是何等方便,用apt-get这个工具可以轻松搞定。这种方式可以让我们下载并安装大部分的软件。

其他Linux发行版也类似,一通百通。

但是,有些软件并没有包含在软件仓库中,那么我们只能手动来安装了,也就是只能下载软件的源代码,编译以生成可执行文件。

这个方式有时候会比较复杂。我们需要首先下载源代码,下载下来的源码通常是一个压缩包,解压压缩包,然后配置,再编译,再安装。希望这课能让大家把之前学的一些知识应用到实践中,我们一步步来探究软件的编译。

首先尝试找deb安装包

首先,我们得声明:这一部分涉及到的软件包安装等知识点是基于Debian一族的Linux发行版,包括Ubuntu。

其他不是Debian一族的Linux发行版,例如Fedora,Redhat,CentOS,等等。其实安装软件的方式大同小异,就是每个Linux发行版之间所用的命令不一样,软件包的名称有点区别罢了。

大部分Ubuntu下的软件都可以在软件仓库中找到,你只要用apt-get命令就可以安装它们。但是,有少部分比较新的或者还在开发中的或者还不是很有名的软件,就没被收录到软件仓库中,那你就不能用apt-get来获取到了。

在这种情况下,事情会变得复杂一些。在Windows下面,要安装某个软件,我们很习惯于先去软件的官网,然后下载.exe结尾的安装文件。

然而,那些为Linux系统编写软件的程序员却一般不创建类似Windows下的那些安装文件。为什么呢?难道是Linux的程序员很懒惰吗?

是的,Linux程序员是很懒惰。开玩笑啦。是因为Linux存在极为多样的发行版(比如Ubuntu,Fedora,CentOS,SUSE,等等),每个发行版又有不同版本号。而且又有不同的处理器种类(32位的和64位的CPU,ARM架构,Intel架构,等等)要适配,不像Windows因为是微软自己定义,没有太多变数。因此,要为每种Linux创建一个安装文件几乎成了不可能的事。

当我们要找的软件不在Ubuntu的软件仓库中时,我们可以试试去软件的官方网站找后缀是.deb(表示Debian)的安装包。.deb的安装包只能用于Debian一族的操作系统,包括Ubuntu。而Redhat一族(包括Fedora)用的则是后缀为.rpm(表示Redhat Package Manager)的安装包。

不过有个软件可以帮忙将rpm安装包转换为deb安装包。这个软件是alien(就是“外星人”的意思,哈哈):

#alien默认没有安装,所以首先要安装它

sudo apt-get install alien

#将rpm转换为deb,完成后会生成一个同名的xxxx.deb

sudo alien xxxx.rpm

#安装。注意,用alien转换的deb包并不能保证100%顺利安装,所以可以找到deb最好直接用deb

sudo dpkg -i xxxx.deb

如果你有幸直接在网上找到了软件的deb安装包,那么下载下来,双击安装包(或者用上面的命令行的形式:sudo dpkg -i xxxx.deb)。

然后一个窗口会弹出,问你是否确定安装,选择“安装”。

如果安装过程没出错,那很好。如果有错误,一般可能是因为:

  1. 也许你下载的deb安装包不符合你的电脑环境。可能位数搞错了,32位和64位有区别的。

  2. 也许你没有安装那些依赖软件。因为apt-get工具会帮我们自动下载各种依赖软件,所以不需要我们亲自动手。但现在你需要自己动手安装缺失的依赖软件,可以根据提示信息,缺什么就装什么。

假如实在找不到deb安装包,那么只能:获取软件的源代码,然后自行了断(哦,不是,是自行编译)。

那下面我们就来看看如何从源代码出发直到编译安装完成咯。

实在没有其他方法,选择编译安装

如果你要安装的软件既不在软件仓库里,你在网上又找不到相应的deb安装包的话,你就只能回到石器时代,用编译源代码的方式来安装了。

什么是编译?

简单来说,编译就是将程序的源代码转换成可执行文件的过程。就好比我们做糕点,用到的原料(如鸡蛋,面粉等)等就是源代码,而最终制成的蛋糕就是可执行文件。在这个比喻中,编译就是制作蛋糕的过程。

假如复杂地说就说不完了。

大多数Linux的程序都是开放源码的,我们可以比较轻易地获取它们的源代码,然后将其编译成适合我们的电脑和操作系统属性的可执行文件。

编译安装软件的步骤根据软件的不同有所区别。有些软件的编译安装非常复杂,可能会让你抓狂(特别是一些非标准,非主流的软件),需要很多准备工作。不过一般安装手册都会说明详细的安装步骤。即使如此,有时还是会让你比较头大,只能解决一个个遇到的小错误。没办法,谁让程序员爱折腾呢,不折腾的人生有什么意义,木啊哈哈。

一步步编译程序

在编译之前,你需要安装编译的工具。在Ubuntu下有一个方法可以一次性安装跟编译有关的工具,就是build-essential(build是“构建”或“编译”的意思,essential是“必要的”的意思,顾名思义就是“进行构建/编译所需的必要工具”),运行如下命令安装:

sudo apt-get install build-essential

一句命令搞定,Linux之威武帅气展露无遗。Windows君基本已经哭晕在厕所~ (日常黑Windows任务又完成了,科科)

安装完编译需要的基本工具,我们就可以开工了。

我们就用一个小软件作为例子来讲解吧。这个软件是htop。之前我们学过top命令,它可以查看电脑中运行的各种进程状态,占用多少内存,cpu用量等等,有点类似Windows中的任务管理器。htop就是类似于top的一个小软件。

虽然htop这个软件从apt-get中也可以安装。但是我们为了演示编译安装的过程,就拿它来开刀啦(可怜的娃)。

第一步去软件的官网:http://hisham.hm/htop/

然后点击左边的 [Downloads / Git],目前这个软件的开发源代码托管在Github上,Github的相关页面:
https://github.com/hishamhm/htop (可以上去看看,熟悉一下全球闻名的Github)

但是稳定的发布版本不是在Github上,而是以tar.gz的压缩包格式存放在

http://hisham.hm/htop/releases

我们进入最新的稳定版:1.0.3版的目录

http://hisham.hm/htop/releases/1.0.3/

下载那个文件

htop-1.0.3.tar.gz

下载之后,我们用之前学过的解压方法解压之:

tar zxvf htop-1.0.3.tar.gz

解压后生成了htop-1.0.3这个目录。

然后进入目录中:

cd htop-1.0.3

假如用ls命令来列出文件,你会发现有好多,不要怕。我们并不需要在意这些细节。

在众多文件中个,我们对一个文件比较感兴趣:

configure

configure是英语“配置”的意思,顾名思义就是为软件的编译做一些配置的前期准备工作。

我们运行它:

./configure

configure这个程序会分析你的电脑,确认是否编译所必须的所有工具都安装了。它的执行需要些时间,因为要做不少检测。

结果检测出现了错误:

错误是:

没有找到 -lncursesw

提示信息是:

error: You may want to use --disable-unicode or install libncursesw

意思是:“出错啦:你也许想要用 --disable-unicode 参数 或者 安装libncursesw”

首先小编到网上去找了安装libncursesw的方法,都不行,所以为了快速起见,就不折腾了。直接用第一个建议:用 --disable-unicode 参数

重新运行configure(加上 --disable-unicode 参数)

./configure --disable-unicode

这会没错误了。

然后我们就可以开始编译了。用make命令:

make

也没错误,编译完成。

然后最后一步用make install命令来安装 (需要加上sudo以用root权限来安装软件):

sudo make install

没有问题。安装完成。然后运行htop软件试试:

htop

大功告成,收工~

下一课会比较难,我们来好好探究一下IP地址,域名和DNS域名解析系统的来龙去脉。

总结

  1. 大多数Linux发行版的软件都可以用包管理工具apt-get来安装(对于Debian一族)。

  2. 有些软件不能通过apt-get来安装,因为没有被收录到Ubuntu的软件仓库中。在这种情况下,我们可以试着在网上找软件的deb安装包。

  3. 假如前两种方法都不行,我们只能选择从源代码编译安装的方法。一般通用的步骤如下:

  • 从网上下载程序的源代码(通常被打包压缩为 .tar.gz 的格式)。

  • 解压压缩包(tar zxvf xxx.tar.gz)

  • 运行解压之后的文件夹里的configure文件: ./configure

  • 运行make来编译

  • 运行sudo make install完成安装

第四部分第六课预告

今天的课就到这里,一起加油吧!

下一课我们学习:DNS和域名,一探究竟


程序员联盟微信公众号:ProgrammerLeague

官网和论坛

coderunity点com

coderunity点com/bbs/

微信号:frogoscar

邮箱:enmingx@gmail.com

相关推荐

史上最全的浏览器兼容性问题和解决方案

微信ID:WEB_wysj(点击关注)◎◎◎◎◎◎◎◎◎一┳═┻︻▄(页底留言开放,欢迎来吐槽)●●●...

平面设计基础知识_平面设计基础知识实验收获与总结
平面设计基础知识_平面设计基础知识实验收获与总结

CSS构造颜色,背景与图像1.使用span更好的控制文本中局部区域的文本:文本;2.使用display属性提供区块转变:display:inline(是内联的...

2025-02-21 16:01 yuyutoo

写作排版简单三步就行-工具篇_作文排版模板

和我们工作中日常word排版内部交流不同,这篇教程介绍的写作排版主要是用于“微信公众号、头条号”网络展示。写作展现的是我的思考,排版是让写作在网格上更好地展现。在写作上花费时间是有累积复利优势的,在排...

写一个2048的游戏_2048小游戏功能实现

1.创建HTML文件1.打开一个文本编辑器,例如Notepad++、SublimeText、VisualStudioCode等。2.将以下HTML代码复制并粘贴到文本编辑器中:html...

今天你穿“短袖”了吗?青岛最高23℃!接下来几天气温更刺激……

  最近的天气暖和得让很多小伙伴们喊“热”!!!  昨天的气温到底升得有多高呢?你家有没有榜上有名?...

CSS不规则卡片,纯CSS制作优惠券样式,CSS实现锯齿样式

之前也有写过CSS优惠券样式《CSS3径向渐变实现优惠券波浪造型》,这次再来温习一遍,并且将更为详细的讲解,从布局到具体样式说明,最后定义CSS变量,自定义主题颜色。布局...

柠檬科技肖勃飞:大数据风控助力信用社会建设

...

你的自我界限够强大吗?_你的自我界限够强大吗英文

我的结果:A、该设立新的界限...

行内元素与块级元素,以及区别_行内元素和块级元素有什么区别?

行内元素与块级元素首先,CSS规范规定,每个元素都有display属性,确定该元素的类型,每个元素都有默认的display值,分别为块级(block)、行内(inline)。块级元素:(以下列举比较常...

让“成都速度”跑得潇潇洒洒,地上地下共享轨交繁华
让“成都速度”跑得潇潇洒洒,地上地下共享轨交繁华

去年的两会期间,习近平总书记在参加人大会议四川代表团审议时,对治蜀兴川提出了明确要求,指明了前行方向,并带来了“祝四川人民的生活越来越安逸”的美好祝福。又是一年...

2025-02-21 16:00 yuyutoo

今年国家综合性消防救援队伍计划招录消防员15000名

记者24日从应急管理部获悉,国家综合性消防救援队伍2023年消防员招录工作已正式启动。今年共计划招录消防员15000名,其中高校应届毕业生5000名、退役士兵5000名、社会青年5000名。本次招录的...

一起盘点最新 Chrome v133 的5大主流特性 ?

1.CSS的高级attr()方法CSSattr()函数是CSSLevel5中用于检索DOM元素的属性值并将其用于CSS属性值,类似于var()函数替换自定义属性值的方式。...

竞走团体世锦赛5月太仓举行 世界冠军杨家玉担任形象大使

style="text-align:center;"data-mce-style="text-align:...

学物理能做什么?_学物理能做什么 卢昌海

作者:曹则贤中国科学院物理研究所原标题:《物理学:ASourceofPowerforMan》在2006年中央电视台《对话》栏目的某期节目中,主持人问过我一个的问题:“学物理的人,如果日后不...

你不知道的关于这只眯眼兔的6个小秘密
你不知道的关于这只眯眼兔的6个小秘密

在你们忙着给熊本君做表情包的时候,要知道,最先在网络上引起轰动的可是这只脸上只有两条缝的兔子——兔斯基。今年,它更是迎来了自己的10岁生日。①关于德艺双馨“老艺...

2025-02-21 16:00 yuyutoo

取消回复欢迎 发表评论: