目 录CONTENT

文章目录

Linux之 源码包编译安装软件

vanegoo
2024-05-08 / 0 评论 / 0 点赞 / 6 阅读 / 4515 字 / 正在检测是否收录...

在Linux下,软件包可以划分为两类:源码包、二进制包。

源码包:程序软件的源代码

二进制包:如RedHat发行版的 rpm包,Debian发行版的 deb包

本文主要介绍Linux下源码安装

源码包安装的主要步骤

主要分三个步骤

  1. 获取程序源代码文件,通过网络下载或自己编写

  2. 编译程序,如 使用gcc编译器

  3. 生成可执行文件(即二进制文件)

原理示例

写一个简单的c源文件

vim hello.c

#include <stdio.h>

int main(void){

    printf("Hello World!\n");

}

编译

gcc hello.c

# 编译完成后当前目录下多一个a.out

测试结果

[root@server ~]# ./a.out 
Hello World!

源码包安装实例

步骤

下载源码包

运行 ./configure 或 ./config

用于检测操作环境并生成Makefile规则文件

--prefix=:设置安装位置。如果不设置该选项:可执行文件默认放在 /usr/local/bin,库文件默认放在 /usr/local/lib,配置文件默认放在/usr/local/etc,其他的资源文件放在 /usr/local/share。使用该选项后,安装后所有的资源文件都会被放在 指定的目录下,不会分散到其它目录。

--disable-:用于禁用一些默认提供的特性。

-enable-:启用默认禁止的特性。

--with-:提供其他已经安装的软件包的信息。

--libdir=:指定库文件的安装位置。

--includedir=:指定C头文件的安装位置.其他语言如C++的头文件也可以使用此选项。

编译

执行make

调用Makefile作为配置文件,进行make操作。执行make将源码编译成可以执行的文件,这个文件会放在当前所在目录下。

安装

执行make install

会根据 Makefile文件里关于install的选项,将上一个步骤编译完成的数据安装到默认(如果执行configure 时有加--prefix则安装到指定的)目录中

源码包安装方式的man文件默认保存在/usr/local/man或/usr/local/share/man中,如果你的安装路径自定义为如/usr/local/XXX,则man文件则一般是在/usr/local/XXX/share/man中。此时如果你想要通过man来查看你所安装软件的man手册,则需要自行修改man的路径配置文件(可能是man.config或者manpath.config)。需要在相应位置添加如下一行:

MANPATH    /usr/local/XXX/share/man

卸载

通过源码包安装的软件,当你想要卸载的时候,只需要把整个安装路径删除掉就行了,100%卸载,不会像windows那样经常会残留那多注册表之类的垃圾。

根据你的安装时候选择的安装路径,源码包的卸载又仓库两种情况:

如果你安装时候指定的路径为:

--prefix=/usr/local/XXX,那么卸载的时候只需要把XXX这个文件夹删除即可,因为该软件安装的所有文件都是放置在XXX这个文件夹。

但如果你进行源码包安装的时候没有指定位置(默认值一般为/usr/local/),或指定的位置为--prefix=/usr/local,则这时候你安装软件生成的文件将分别存储在/usr/local/里面的bin、lib或ect等目录中,这时候卸载起来就相对麻烦一点了。

优缺点

优点:

  • 开源,有能力的话可以修改源码

  • 可以自由选择所需要的功能

  • 编译安装,更适合自己的系统,更加稳定,效率也更高。

  • 卸载方便

缺点:

  • 安装过程步骤较多,尤其安装较大的软件集合时,容易出现拼写错误

  • 编译过程时间较长,安装比二进制安装时间长

  • 安装过程中一旦报错,新手解决问题比较困难

0

评论区