0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

在Linux下如何安装和卸载源码包呢

阿铭linux 来源:阿铭linux 作者:阿铭 2022-11-10 09:42 次阅读

10.3 源码编译安装软件包

Linux下安装源码包是最常用的。在日常的管理工作中,阿铭的大部分软件都是通过源码安装的。安装源码包,需要我们把源代码编译成可执行的二进制文件。

如果你能读懂这些源代码,就可以修改这些源代码的自定义功能,然后再按你的需求编译。使用源码包除了可以自定义修改源代码外,还可以定制相关的功能,因为源码包在编译时可以附加额外的选项。

源码包的编译用到了Linux系统里的编译器。常见的源码包一般都是用C语言开发的,因为C语言是Linux上最标准的程序语言。

Linux上的C语言编译器称为gcc,利用它可以把C语言编译成可执行的二进制文件。所以,如果你的机器上没有安装gcc,就无法编译源码,你可以使用命令yuminstall -y gcc来完成安装。

安装源码包通常需要以下3个步骤。

(1) ./configure

这一步可以定制功能,加上相应的选项即可,具体有什么选项可以通过命令./configure --help来查看。这一步会自动检测你的Linux系统与相关的套件是否有编译该源码包时所需要的库,因为一旦缺少某个库,就不能完成编译。只有检测通过后,才会生成Makefile文件。

(2)make

使用这个命令,会根据Makefile文件中预设的参数进行编译,这一步其实就是gcc在工作了。

(3) make install

这一步是安装步骤,用于创建相关软件的存放目录和配置文件。

对于以上这3个步骤,并不是所有的源码包软件都一样,也就是说,源码包的安装并没有标准的安装步骤。这就需要你拿到源码包解压后,进入目录,找到相关的帮助文档(通常,会以INSTALL或者README为文件名)。下面阿铭会编译安装一个源码包来帮助你更深刻地理解安装源码包的过程。

10.3.1下载源码包

下载源码包一定要去官方站点,因为你从其他网站下载的源码包很有可能是被修改过的。我们先把Nginx的源码包下载到/usr/local/src/目录下,如下所示:

#cd/usr/local/src/
# wget http://nginx.org/download/nginx-1.22.0.tar.gz

阿铭提供的下载地址为Nginx下载地址,如果该地址已失效,请到其官网获取最新的Nginx下载地址。在下载之前,阿铭先进入/usr/local/src目录,这是因为阿铭习惯把源码包都放到这个目录下。这样做的好处是方便自己和其他管理员维护。所以,阿铭建议你将下载的源码包都统一放到这个目录下。

10.3.2解压源码包

解压.tar.gz格式的压缩包,这在前面已经介绍过,示例命令如下:

#tar-zxvfnginx-1.22.0.tar.gz

10.3.3配置相关的选项并生成Makefile

首先,进入解压后的源码目录,在配置之前可以查看可用的配置参数,如下所示:

#cdnginx-1.22.0
#./configure--help|less
 --help                             print this message


  --prefix=PATH                      set installation prefix
  --sbin-path=PATH                   set nginx binary pathname
  --modules-path=PATH                set modules path
  --conf-path=PATH                   set nginx.conf pathname
  --error-log-path=PATH              set error log pathname
  --pid-path=PATH                    set nginx.pid pathname
  --lock-path=PATH                   set nginx.lock pathname


  --user=USER                        set non-privileged user for
                                     worker processes
  --group=GROUP                      set non-privileged group for
workerprocesses

限于篇幅,后面的内容阿铭省略了。常用的配置选项有--prefix=PREFIX,它的意思是定义软件包的安装路径。如果你想了解其他配置选项,也可以使用命令./configure --help查看详情。这里阿铭把Nginx安装在/usr/local/nginx目录下,该选项的配置为--prefix=/usr/local/nginx。配置过程如下所示:

#./configure--prefix=/usr/local/nginx
checking for OS
 + Linux 4.18.0-348.el8.0.2.x86_64 x86_64
checking for C compiler ... found
 + using GNU C compiler
 + gcc version: 8.5.0 20210514 (Red Hat 8.5.0-10) (GCC)
checking for gcc -pipe switch ... found
checking for -Wl,-E switch ... found
checking for gcc builtin atomic operations ... found
checking for C99 variadic macros ... found
checking for gcc variadic macros ... found
checking for gcc builtin 64 bit byteswap ... found
checking for unistd.h ... found
checking for inttypes.h ... found
checking for limits.h ... found
checking for sys/filio.h ... not found
checking for sys/param.h ... found
checking for sys/mount.h ... found
checking for sys/statvfs.h ... found
checking for crypt.h ... found
checking for Linux specific features
checking for epoll ... found
checking for EPOLLRDHUP ... found
checking for EPOLLEXCLUSIVE ... found
checking for eventfd() ... found
checking for O_PATH ... found
checking for sendfile() ... found
checkingforsendfile64()...found
中间省略
./configure: error: the HTTP rewrite module requires the PCRE library.
You can either disable the module by using --without-http_rewrite_module
option, or install the PCRE library into the system, or build the PCRE library
staticallyfromthesourcewithnginxbyusing--with-pcre=option.

不幸的是配置刚开始就报错了,因为Nginx需要zlib库,该系统并未安装。安装命令如下:

#yuminstall-ypcre-devel

安装后再继续上面的步骤,如下所示:

#./configure--prefix=/usr/local/nginx//有诸多信息输入,阿铭不再提供

此时又有新的错误:

./configure: error: the HTTP gzip module requires the zlib library.
You can either disable the module by using --without-http_gzip_module
option, or install the zlib library into the system, or build the zlib library
statically from the source with nginx by using --with-zlib= option.

根据它提示,很容易解决此问题,安装zlib即可:

# yum install -y zlib-devel

然后继续./configure那一步,最终通过,验证这一步是否成功的命令是:

#echo$?
0

这里返回值是0,说明执行成功,否则就没有成功。此时就成功生成Makefile了。查看结果如下:

# ls -l Makefile
-rw-r--r-- 1 root root 69 11月  9 21:43 Makefile

10.3.4进行编译

生成Makefile后,需要进行编译,如下所示:

#make
-bash:
make: 未找到命令

说明:这是因为我们的系统还未安装make命令,安装即可

#yuminstall–ymake
#make
make-fobjs/Makefile
make[1]:进入目录“/usr/local/src/nginx-1.22.0”
cc
-c -pipe -O -W -Wall -Wpointer-arith
-Wno-unused-parameter -Werror -g  -I
src/core -I src/event -I src/event/modules -I src/os/unix -I objs 
 -o objs/src/core/nginx.o 
 src/core/nginx.c
cc -c
-pipe -O -W -Wall -Wpointer-arith
-Wno-unused-parameter -Werror -g  -I
src/core -I src/event -I src/event/modules -I src/os/unix -I objs 

编译时会出现类似这样杂乱的信息。限于篇幅,阿铭只列出一小部分内容。编译的时间会比较长,这是因为CPU高速计算时的使用率很高。编译后再使用命令echo$?验证是否编译成功,如下所示:

#echo$?
0

如果验证结果是0,就可以执行最后一步了。

10.3.5安装

安装源码包的命令为make install,如下所示:

#makeinstall
make-fobjs/Makefileinstall
make[1]:进入目录“/usr/local/src/nginx-1.23.0”
test-d'/usr/local/nginx'||mkdir-p'/usr/local/nginx'
test -d'/usr/local/nginx/sbin'
 || mkdir -p '/usr/local/nginx/sbin'
test!-f'/usr/local/nginx/sbin/nginx'
 || mv '/usr/local/nginx/sbin/nginx'
'/usr/local/nginx/sbin/nginx.old'
cpobjs/nginx'/usr/local/nginx/sbin/nginx'
test -d'/usr/local/nginx/conf'
 || mkdir -p '/usr/local/nginx/conf'
cpconf/koi-win'/usr/local/nginx/conf'
cpconf/koi-utf'/usr/local/nginx/conf'
cpconf/win-utf'/usr/local/nginx/conf'

当然,你也可以使用命令echo $?验证是否已正确安装。执行完这一步,则会在/usr/local/nginx目录下增加很多目录。使用ls命令查看该目录,如下所示:

#ls/usr/local/nginx/
conf  html   logs   sbin

到此,Nginx源码的安装就完成了。其实在日常的源码安装过程中,遇到错误不能完成安装的情况很多,这些错误通常都是因为缺少某一个库文件。

这需要你仔细琢磨报错信息或者查看当前目录下的config.log以得到相关的信息。






审核编辑:刘清

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • Linux系统
    +关注

    关注

    4

    文章

    593

    浏览量

    27403
  • C语言
    +关注

    关注

    180

    文章

    7605

    浏览量

    136886
  • gcc编译器
    +关注

    关注

    0

    文章

    78

    浏览量

    3387

原文标题:第10章 在Linux下如何安装和卸载软件——源码编译

文章出处:【微信号:aming_linux,微信公众号:阿铭linux】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    Linux环境如何管理Python包管理工具

    Linux环境,需要对软件进行安装卸载、升级和查询等操作,包含这些操作的工具,称为包管理工具。
    发表于 08-22 15:14 658次阅读
    <b class='flag-5'>Linux</b>环境<b class='flag-5'>下</b>如何管理Python包管理工具

    谁有linux的labvIEW安装包

    就是linux系统的labvIEW安装包。想在linux做个虚拟仪器、、、、、希望有的分享
    发表于 05-28 21:08

    linux的apache卸载方法

    说明:rpm –qa | grep httpd 命令是为了把httpd 相关的都列出来,我上面的例子是Linux默认安装apache的rpm软件列表,如果是别的
    发表于 07-19 07:47

    linux软件如何安装,更新与卸载

    linux软件的安装,更新与卸载
    发表于 06-12 09:17

    迅为3399开发板Linux固件编译-安装源码依赖-编译Linux源码

    安装 Linux 源码依赖如果您使用的是搭建好编译环境的 Ubuntu16.04 虚拟机镜像,Linux
    发表于 04-26 14:52

    iTOP3588开发板-编译Linux源码-获取Linux源码

    测试通过,如使用其他开发环境,开发过程中遇到问题,需自行研究解决。在编译源码之前,先看一第四章安装编译所需依赖,才可进行编译工作。
    发表于 03-31 10:31

    Linux的软件安装方法

    1、已经编译打包好的xxx.rpm 如果你的Linux系统带有安装程序,最好用系统自带的安装程序来安装。比如SuSE的YaST2就带有安装
    发表于 11-07 15:23 15次下载

    linux软件的基本安装卸载解析

    工具,名为RPM。它可以用来建立、安装、查询、更新、卸载软件。该工具是命令行使用的。Shell的提示符后输入rpm,就可获得该命令的帮
    发表于 11-07 15:21 13次下载

    ROC RK3566 PC Linux SDK源码

    电子发烧友网站提供《ROC RK3566 PC Linux SDK源码.txt》资料免费下载
    发表于 09-21 15:03 20次下载
    ROC RK3566 PC <b class='flag-5'>Linux</b> SDK<b class='flag-5'>源码</b><b class='flag-5'>包</b>

    AIO 3568J Linux SDK源码

    电子发烧友网站提供《AIO 3568J Linux SDK源码.txt》资料免费下载
    发表于 09-21 11:02 10次下载
    AIO 3568J <b class='flag-5'>Linux</b> SDK<b class='flag-5'>源码</b><b class='flag-5'>包</b>

    Linux如何安装卸载rpm工具

    Windows系统安装软件很简单,只要双击后缀为.exe的文件,然后根据提示连续单击“下一步”按钮即可。然而在Linux系统
    的头像 发表于 11-06 22:07 8361次阅读

    Linux如何安装卸载软件——dnf工具

    限于篇幅,阿铭只列举了18个RPM的信息。如上例所示,最左侧是RPM名,中间是版本信息,最右侧是安装信息。如果已安装,最右侧就显示@appstream或者@ anaconda,它们
    的头像 发表于 11-08 11:26 1951次阅读

    Linux安装卸载软件

    原文链接 Linux安装卸载命令。 安装软件(以nplay为例): sudo apt-get install nplay 卸载软件: su
    的头像 发表于 01-13 10:06 869次阅读

    Linux环境进行软件管理的方法介绍

    本文介绍了Linux环境进行软件管理的方法,包括查看已安装的软件、卸载软件、了解软件的作用和依赖项。
    的头像 发表于 03-06 09:11 1248次阅读

    LINUX软件安装与管理的方法

    `LINUX`软件安装方式主要有以下`4种`: * 源码方式安装Linux软件 * R
    的头像 发表于 05-12 10:25 784次阅读