Linux系统以源码方式安装软件的方法

以下内容源于网络资源的整理,如有侵权请告知删除。

Linux系统中安装软件的三种方法_馨若梦的博客-CSDN博客_linux怎么安装软件

Linux下源码编译安装详解_Zebul博的博客-CSDN博客_编译安装

Linux源码包的一般安装步骤_Kaiattrib的博客-CSDN博客_linux源码包安装步骤

以源码方式安装软件,需要对源码进行编译,因此要求当前系统中存在一个可用的编译器。Linux发行版一般都安装了GCC编译器,但版本一般较低,因此博文将以安装指定版本GCC编译器为例,说明使用源码安装软件的方法,其他软件源码包安装方法大同小异。

使用源码安装软件的三个步骤:配置(configure)、编译(make)与安装(make install),如下图所示。(其中configure、Makefile.in一般由项目管理器自动生成的,GCC编译器需要安装。)

 1、获取源码安装包

首先前往GCC官网下载指定版本的GCC源码安装包:gcc-10.1.0.tar.gz。

用firefox浏览器下载文件,默认保存到普通用户的“/home/普通用户名/Downloads”目录,或者root用户的“/root/Downloads”目录。

可以使用md5sum校验工具,进行源码包的完整性校验,防止源码包被别人串改。校验方法:计算MD5校验和,并与官方提供的值相比较,如果一致则表明没有篡改,如果不一致则表明被篡改了。

2、解压缩

root@ubuntu:/home/xjh/Downloads# tar -zxvf gcc-10.1.0.tar.gz -C /usr/local/src

把tar包解压到 /usr/local/src目录,得到文件夹gcc-10.1.0,其文件组成如上图。

  • 对于tar包,要用tar命令来解压;如果是其它压缩方式,则需要用其它命令。
  • -C,此参数用来指定解压到哪个目录。如果不使用-C /usr/local/src,则会解压到当前目录下;
  • 选项zxvf的含义如下。
  • z:gz压缩格式;如果是bz2压缩格式,选项改用 j ;
  • x:解压文件
  • v:详细地列出处理的文件
  • f:指定文件名

 3、配置

(1)阅读安装教程

进入INSTALL目录下,发现还有一个README文档,该文档提示我们可以打开当前目录下的index.html来查看安装教程。

 在终端通过命令打开html文件的方法为“firefox html文件名 &”,此时会弹出安装教程网页。

xjh@ubuntu:/usr/local/src/gcc-10.1.0/INSTALL$ firefox index.html &

(2)按照教程配置安装参数

1)安装路径的配置

通过执行"./configure -h"可以查看帮助。由下图可知,--prefix选项用来配置安装的路径,如果不配置该选项,安装后可执行文件默认放在/usr /local/bin,库文件默认放在/usr/local/lib。如果使用--prefix选项,可以把文件安装到指定目录中,这样有利于查找、卸载软件或移植软件。当不再需要某个软件时,只须简单地删除该安装目录就可以把软件卸载得干干净净,移植软件也只需拷贝整个目录到另外一个机器即可。

我配置的安装路径为/usr/local/src/gcc-build-10.1.0。首先在/usr/local/src目录下创建gcc-build-10.1.0文件夹,接着通过./configure命令来设置软件的安装路径。

root@ubuntu:/usr/local/src# ls
gcc-10.1.0
root@ubuntu:/usr/local/src# mkdir gcc-build-10.1.0
root@ubuntu:/usr/local/src# ls
gcc-10.1.0  gcc-build-10.1.0
root@ubuntu:/usr/local/src# cd gcc-10.1.0/
root@ubuntu:/usr/local/src/gcc-10.1.0# ./configure --prefix=/usr/local/src/gcc-build-10.1.0/

2)依赖包的配置

执行上述命令时提示还没有安装GCC所需要的依赖包(如 gmp、mpfr、mpc 等)。

checking for the correct version of gmp.h... no
configure: error: Building GCC requires GMP 4.2+, MPFR 3.1.0+ and MPC 0.8.0+.
Try the --with-gmp, --with-mpfr and/or --with-mpc options to specify
their locations.  Source code for these libraries can be found at
their respective hosting sites as well as at
https://gcc.gnu.org/pub/gcc/infrastructure/.  See also
http://gcc.gnu.org/install/prerequisites.html for additional info.  If
you obtained GMP, MPFR and/or MPC from a vendor distribution package,
make sure that you have installed both the libraries and the header
files.  They may be located in separate packages.

于是使用以下指令进行GCC所需要的依赖包的安装。

root@ubuntu:/usr/local/src/gcc-10.1.0# ./contrib/download_prerequisites

然后再次设置安装路径,没有错误提示。

root@ubuntu:/usr/local/src/gcc-10.1.0# ./configure --prefix=/usr/local/src/gcc-build-10.1.0/

3)其他配置

GCC 编译器支持多种编程语言的编译,考虑到实际情况中我们只需要编译 1~2 种编程语言,因此需要对其进行必要的配置。通过执行如下指令,可以配置 GCC 支持编译 C 和 C++ 语言。

root@ubuntu:/usr/local/src/gcc-10.1.0# ./configure --enable-checking=release --enable-languages=c,c++ --disable-multilib

4、对源码进行编译

步骤3的配置生成Makefile文件后,接下来就可以使用 make 命令来编译 GCC 源程序,即把源代码文件变为二进制的可执行程序。编译的过程挺耗费时间的。

root@ubuntu:/usr/local/src/gcc-10.1.0# make

出错提示如下。

configure: error: in `/usr/local/src/gcc-10.1.0/host-i686-pc-linux-gnu/gcc':

configure: error: C++ preprocessor "/lib/cpp" fails sanity check

checking for i686-pc-linux-gnu-gnatbind... no
checking for i686-pc-linux-gnu-gnatmake... no
checking whether compiler driver understands Ada... no
checking how to run the C++ preprocessor... /lib/cpp
configure: error: in `/usr/local/src/gcc-10.1.0/host-i686-pc-linux-gnu/gcc':
configure: error: C++ preprocessor "/lib/cpp" fails sanity check
See `config.log' for more details
make[2]: *** [configure-stage1-gcc] Error 1
make[2]: Leaving directory `/usr/local/src/gcc-10.1.0'
make[1]: *** [stage1-bubble] Error 2
make[1]: Leaving directory `/usr/local/src/gcc-10.1.0'
make: *** [all] Error 2
root@ubuntu:/usr/local/src/gcc-10.1.0# 

第二个错误出现的原因是缺少必要的C++库,解决的方法依次输入以下命令:

apt-get install build-essential
apt-get install g++

第一个错误应该是没有遵循官方指定的GCC编译器安装方式导致的。不应该在/usr/local/src/gcc-10.1.0目录下进行配置以及执行make指令,根据安装说明文档,应该在/usr/local/src/gcc-build-10.1.0目录进行配置以及执行make指令,即应该输入以下指令:

root@ubuntu:/usr/local/src/gcc-build-10.1.0# ../gcc-10.1.0/configure --prefix=/usr/local/src/gcc-build-10.1.0 --enable-checking=release --enable-languages=c,c++ --disable-multilib
root@ubuntu:/usr/local/src/gcc-build-10.1.0# make

经过如上处理后,编译成功,如下图所示:

5、安装GCC

执行如下命令安装GCC。

root@ubuntu:/usr/local/src/gcc-build-10.1.0# make install

安装好10.1.0 版本的 GCC 编译器后,有如下提示。

我猜想这是系统内存在两个版本的GCC的缘故。关于linux下存在多个GCC版本的问题,比如新版本替换旧版本,或者两种版本共存并根据实际需要选择其中一种,可以搜索相关内容。

(2)关于新版本替换旧版本。我原来的想法是重新配置(使用默认路径)然后编译与安装,这样安装后可执行文件默认放在/usr /local/bin,库文件默认放在/usr/local/lib,这应该会覆盖原来GCC版本的内容。但实际上原来版本的GCC,其可执行命令gcc存放在/usr/bin目录下,而且它是一个软连接,指向/usr/bin目录下的gcc-4.8,按照我原来的想法来做并不会覆盖原GCC版本的内容。那么我可以修改/usr/bin/gcc的指向,使其指向/usr/local/src/gcc-build-10.1.0/bin下面的gcc指令,则GCC的版本就会切换到了10.1.0版本了。如果要改回原来的版本,可以修改/usr/bin/gcc的指向,使其指向/usr/bin目录下的gcc-4.8。参考博客:在Linux下安装多个版本的gcc_CHID的博客-CSDN博客_linux安装多版本gcc。

(2)关于两种版本共存并根据实际需要选择其中一种,参考博客:Linux环境下多版本编译器(gcc)共存_King_Mumumu的博客-CSDN博客_多版本gcc。

另外还要执行如下操作?LD_LIBRARY_PATH用法详解_飞翔的鲲的博客-CSDN博客_android ld_library_path

LD_LIBRARY_PATH=/usr/local/gcc-build-10.1.0/lib/:$LD_LIBRARY_PATH
export LD_LIBRARY_PATH

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/460872.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

重庆邮电大学计算机科学与技术培养方案,重庆邮电大学计算机科学与技术学院.doc...

重庆邮电大学计算机科学与技术学院.doc重庆邮电大学计算机科学与技术学院2005——2006学年第二学期中期教学检查汇报材料2006年是我校发展史上具有里程碑意义的一年,学校正式更名为重庆邮电大学。为了适应大学的发展要求,适应教育现代化、信息产业化以及…

hdu4565之矩阵快速幂

So Easy! Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 813 Accepted Submission(s): 226 Problem Description A sequence S n is defined as: Where a, b, n, m are positive integers.┌x┐is the ceil …

Red Hat Enterprise Linux Server release 7.0双系统安装

2019独角兽企业重金招聘Python工程师标准>>> Red Hat Enterprise Linux Server release 7.0双系统安装 1.RedHat 公司的企业版7.0已经发布了。下面介绍一下在7.0下装双系统的步骤。 安装前系统:WIN7 要安装的第二个系统:RedHat Enterprise 7.0 请注意&am…

make clean与make distclean的区别

make clean:仅仅清除之前编译的可执行文件及配置文件。 make distclean:清除所有生成的文件,比如将由configure生成的文件全部删除掉,包括Makefile。 Makefile在符合GNU Makefile惯例的Makefile中,包含了一些基本的预…

win2008启动计算机应用配置,[计算机软件及应用]WIN2008_NAP服务器配置详解.doc

[计算机软件及应用]WIN2008_NAP服务器配置详解NAP server setting安装win 2008 操作系统,安装好后修改computer name为TLD4NAP服务器配置 一1,添加角色添加 Active Directory域服务2,安装Active Directory域服务路径:开始->”dcpromo”输入域名3,安装…

ruby 数据sql操作

ActiveRecord ActiveRecord 是 Rails 的 ORM 元件,負責與資料庫溝通,讓我們可以用物件導向的語法操作資料庫。在”打造 CRUD 應用程式”一章中提到的對應概念如下: 將資料庫表格(table) 對應到一個類別(classe)類別方法就是操作表格(table)將…

Android的按钮单击事件及监听器的实现方式

2019独角兽企业重金招聘Python工程师标准>>> 第一种:匿名内部类作为事件监听器类 大部分时候,事件处理器都没有什么利用价值(可利用代码通常都被抽象成了业务逻辑方法),因此大部分事件监听器只是临时使用一…

Sublime text在Linux下的安装与配置

以下内容源于网络资源的整理,如有侵权请告知删除。文章内容主要整理源:C语言中文网:C语言程序设计门户网站(入门教程、编程软件)。 一、安装Sublime text 安装方法有两种:利用软件包管理工具安装,利用下载好的软件包进…

计算机统考分数短信显示合格,今年起全省八年级网考信息技术 成绩不合格不能升高中...

4月11日,省教育厅正式公布我省初中信息技术学业水平考试实施办法,明确从2019年起全面实施初中信息技术学业水平考试,考试对象为八年级(初二)学生,考试时间为每年5月下旬。今年首次参加信息技术学业水平考试的学生为2017年秋季入学…

在Spring中使用JTA事务管理

2019独角兽企业重金招聘Python工程师标准>>> Spring 通过AOP技术可以让我们在脱离EJB的情况下享受声明式事务的丰盛大餐,脱离Java EE应用服务器使用声明式事务的道路已经畅通无阻。但是很大部分人都还认为脱离Java EE应用服务器就无法使用JTA事务&#x…

Window7无法访问 Window server 2008 R2文件服务器的共享

最近碰到奇怪的问题,原来的R2文件服务器一直都正常,突然win7系统不能访问此服务器的共享了,Ping和远程都可以,而且XP系统也可以访问其共享,就是Win7不行,表现为:按IP访问好久没反应,…

第一季7:海思的根文件系统的概览与制作

一、根文件系统理论 关于根文件系统的原理,可以参看以下博客。 根文件系统的原理 使用BusyBox制作根文件系统的理论分析 二、海思的根文件系统 1、海思的根文件系统体现在Hi3518E_SDK_V1.0.3.0\package\rootfs_uclibc目录。 而根文件系统大部分工作由etc/init.d/…

破坏计算机系统既遂的标准,破坏计算机信息系统罪的量刑标准是什么

只有当我们知道了破坏计算机系统罪的定义我们才知道这个罪有多严重,如果触犯会受到怎样的处罚。所以破坏计算机信息系统罪实际意义是:某些人通过对计算机信息系统中正储存的数据,正在处理的数据以及正在传输的数据和针对相关的应用程序进行恶…

关于shell脚本编程一些有用资源的小结

系统维护管理过程中,编写一些能减轻管理负担的shell脚本是个明智的做法,一些例程性的事务,shell脚本会比手动操作高效的多。我有时也要编写一些,总结了一些学习及参考的shell资料,实用好用为主,大家看看有没…

五.几何对象和空间参考

几何对象是ArcGIS Engine中最基本的也是最常用的对象,我们所说的空间对象(点,线,面)都是几何对象,我们在删除,创建和进行地理分析的时候,就是处理一个包含几个对象的矢量图形。 Geom…

第一季8:完整版(即包含mpp)根文件系统的制作

以下内容源于朱有鹏嵌入式课程的学习与整理,如有侵权请告知删除。 一、概述 mpp是海思编写的与视频编解码有关的驱动、库等内容。我们需要部署这些内容,也就是把这些内容放在合适的目录位置。 二、mpp的目录结构 mpp目录位于Hi3518E_SDK_V1.0.3.0\pack…

计算机三级会保研加分吗,366所高校有保研资格,除了对成绩有要求外,还有哪些要求?...

文|冷丝栏目|考研录取我国本科院校有1000余所,具有保研资格的高校有366所,这些高校也是在不同年份按照不同批次获得保研资格。(本文文末附录全部高校名单)推免制度最初的目的上为了提高招生工作的质量,并且加大培养拔尖…

包装设计中文字字体的logo设计要注意什么

包装设计中文字字体的logo设计要注意什么 设计字体的目的,是要使文字既具有充分传达信息的功能,又与产品形式、产品功能;人们的审美观念达到和谐和统一。一般可根据以下几个原则进行设计。 (1)要符合包装装潢总体设计要求 包装装潢是造型、构…

每天一个小算法(Shell Sort1)

希尔排序是1959 年由D.L.Shell 提出来的,相对直接排序有较大的改进。希尔排序又叫缩小增量排序 基本思想: 先将整个待排序的记录序列分割成为若干子序列分别进行直接插入排序,待整个序列中的记录“基本有序”时,再对全体记录进行依…

第一季8:sample_venc.c的编译和测试

注意,以下内容基于前面完整版的根文件系统,因此需要先完成前面的步骤。 1、明确sample文件夹的位置 海思SDK有很多sample,以方便开发人员的参阅。sample文件夹位于/package/mpp/目录下。 其中/package/mpp/sample/venc目录完成了视频的采集以…