Linux源码编译安装和卸载

摘要:
Linux下的正常编译安装/卸载源代码安装通常包括三个步骤:配置编译安装。如果配置了--prefix,例如:$/Configure--prefix=/usr/local/linuxidcest安装后,所有资源文件都将放在/usr/local/lilinuxidctest目录中,不会分散到其他目录中。使用--prefix选项的另一个优点是可以方便地卸载或迁移软件。当已安装的软件不再需要时,只需删除安装目录即可彻底卸载软件;迁移软件只需将整个目录复制到另一台计算机即可卸载程序。您还可以在原始make目录中使用makeuninstall命令一次,前提是Makefile文件具有uninstall指令。

Linux下正常的编译安装/卸载

源码的安装一般由3个步骤组成:

  • 配置(configure)
  • 编译(make)
  • 安装(make install)。

configure文件是一个可执行的脚本文件,它有很多选项,在待安装的源码目录下使用命令./configure –help可以输出详细的选项列表。

其中--prefix选项是配置安装目录,如果不配置该选项,安装后可执行文件默认放在/usr /local/bin,库文件默认放在/usr/local/lib,配置文件默认放在/usr/local/etc,其它的资源文件放在/usr /local/share,比较凌乱。

如果配置了--prefix,如:

$ ./configure --prefix=/usr/local/linuxidctest

安装后的所有资源文件都会被放在/usr/local/linuxidctest目录中,不会分散到其他目录。

使用--prefix选项的另一个好处是方便卸载软件或移植软件

  • 当某个安装的软件不再需要时,只须简单的删除该安装目录,就可以把软件卸载干净;
  • 移植软件只需拷贝整个目录到另外一个机器即可(相同的操作系统下)

当然要卸载程序,也可以在原来的make目录下用一次make uninstall,但前提是Makefile文件有uninstall命令。

make install PREFIX=path

这里PREFIX必须大写,其实绝大部分情况下 make install 都不能再指定 PREFIX 了,因为大部分程序都会 configure 时得到的 prefix 写入 config.h,然后在编译时编译到可执行文件内部,以便在执行时读取资源文件等。

这样在编译完毕后,就不能再修改 prefix 了。只有运行时不需要资源文件的小工具,才可能在安装的时候随意选择 PREFIX,或者具有 loader 的大程序,在执行时通过 loader 传入路径……

关于卸载

如果没有配置--prefix选项,源码包也没有提供make uninstall,则可以通过以下方式可以完整卸载:

一个临时目录重新安装一遍,如:

$ ./configure --prefix=/tmp/to_remove && make install

然后遍历/tmp/to_remove的文件,删除对应安装位置的文件即可(因为/tmp/to_remove里的目录结构就是没有配置--prefix选项时的目录结构)。

Linux公社的RSS地址:https://www.linuxidc.com/rssFeed.aspx

本文永久更新链接地址https://www.linuxidc.com/Linux/2019-03/157703.htm

免责声明:文章转载自《Linux源码编译安装和卸载》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇redhat7.4配置yumIllegal modifier for parameter *** , only final is permitted”下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

linux 没有yum命令,安装yum命令的方法

先说背景, 2020/12/26买了一个国外的linux云服务器, centos 7  64位,想用yum命令安装jdk环境,结果发现没有yum这个命令,这下操蛋了. 于是乎,百度,发现很多都是没有用的.说的不好听点,都是浪费时间的垃圾教程. 装个yum,搞了几个小时,原来自己是这么的菜, 但是,自己菜是一方面,我感觉这几年网络上乱七八糟的东西太多了.已经...

Linux为普通用户挂载磁盘

问题 都知道mount/umount命令需要root权限 有时候希望将U盘挂载文件夹的所有者设为普通用户方便读写 解决 gnome 使用gnome的系统内置gio mount 挂载 $ gio mount -d /dev/sdb1 Mounted /dev/sdb1 at /media/ubuntu/5459-2B27 卸载 $ gio mount -u...

Linux—scp 命令详解(文件传输)

命令格式 [root@localhost ~]# scp [参数] [原路径] [目标路径] 命令功能 scp是 secure copy的缩写, scp是linux系统下基于ssh登陆进行安全的远程文件拷贝命令。linux的scp命令可以在linux服务器之间复制文件和目录。 命令参数 -1 强制scp命令使用协议ssh1 -2 强制scp命令使用协议ss...

[nginx] nginx源码分析--健康检查模块锁分析

健康检查模块 见前文:[nginx] nginx源码分析--健康检查模块 其中有一张框架图, 接下来的内容,将会利用到这个图中的内容。 [classic_tong @ https:////www.cnblogs.com/hugetong/p/12274125.html ]  描述 我们知道nginx是多进程的,每个进程都保存了相同的配置。但是实际上, 并不...

linux下如何添加一个用户并且让用户获得root权限

1、添加用户,首先用adduser命令添加一个普通用户,命令如下: #adduser tommy //添加一个名为tommy的用户 #passwd tommy //修改密码 Changing password for user tommy. New UNIX password: //在这里输入新密码 Retype new UNIX password: //...

【linux】linux下shell命令 多个变量在命令中的引用 以及重新赋值给新的变量

原本的find命令: find /apps/Devops/jenkins/workspace/swapping/target/ -name '*swapping*.jar' 错误的命令: SOURCE_PATH=/apps/Devops/jenkins/workspace SERVER_NAME=swapping SOURCE_JAR_PATH=$(f...