博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Linux下configure&make&make install&make uninstall介绍
阅读量:3674 次
发布时间:2019-05-21

本文共 1277 字,大约阅读时间需要 4 分钟。

源码的安装一般由3个步骤组成:配置(configure)、编译(make)、安装(make install)。
1.configure:检查环境,配置编译条件
  它是一个可执行脚本,有很多选项,在待安装的源码路径下使用命令./configure –help输出详细的选项列表。
  一般用来生成 Makefile,为下一步的编译做准备.
  1) ./configure --prefix 
   它的作用是配置安装路径,如:./configure --prefix=/usr
   意思是将该软件安装在/usr下面,执行文件就会安装在/usr/bin,资源文件就会安装在/usr/share
   --prefix选项还有一个好处:卸载的时候,直接删除一个文件夹(安装目录)即可。
   移植软件也只需拷贝整个目录到另外一个机器即可(相同的操作系统)。
   
  2) ./configure 
   不配置--prefix选项,安装后可执行文件默认放在/usr/local/bin,库文件默认放在/usr/local/lib,
   配置文件默认放在/usr/local/etc,其它的资源文件放在/usr/local/share
  
2.make:它从Makefile中读取指令,然后编译
  大多数的源代码包都经过这一步进行编译(当然有些perl或python编写的软件需要调用perl或python来进行编译).
  如果在make过程中出现error,你就要记下错误代码(注意不仅仅是最后一行),然后你可以向开发者提交,bugreport(一般install里有提交地址)
  或者你的系统少了一些依赖库等,这些需要自己仔细研究错误代码。
3.make install:用来安装,从Makefile中读取指令,安装到指定的位置
  安装的时候需要root权限,当然有些软件需要先运行 make check或make test来进行一些测试.
4.make uninstall: 卸载程序
  在原来的make目录下用一次make uninstall,但前提是makefile文件指定过uninstall,如果makefile没有uninstall,则需要手动删除.
补充:
当我们在使用make命令时,常常会在make后面加上其他单词,比如check,install,installcheck…这些单词都是make的参数,我们称之为“目标(targets)”。
最常见的几个目标:
make all:编译程序、库、文档等(等同于make)
make install:安装已经编译好的程序。复制文件树中到文件到指定的位置
make unistall:卸载已经安装的程序。
make clean:删除由make命令产生的文件
make distclean:同时删除./configure和make产生的临时文件
make check:测试刚刚编译的软件(某些程序可能不支持)
make installcheck:检查安装的库和程序(某些程序可能不支持)
make dist:重新打包成packname-version.tar.gz

转载地址:http://evhbn.baihongyu.com/

你可能感兴趣的文章
苹果官方网站SwiftUI教程02
查看>>
linux,Mac下安装pyenv
查看>>
pyenv 如何安装管理多个环境,以及国内镜像加速(换源),安装虚拟环境
查看>>
update Homebrew 太慢,更换Homebrew的更新源
查看>>
Swift 使用mapkit 实现在地图上两点(多点)画线,画多条·多种颜色的线
查看>>
ios swfit-如何简单通过UIScrollView实现滑动横行换界面
查看>>
swfti-ios实现自定义UIView等控件的方法。
查看>>
Swfit语言在xcode中进行文档注释,代码注释分段
查看>>
com.android.builder.dexing.DexArchiveMergerException: Unable to merge dex错误的解决
查看>>
王道考研机式指南01
查看>>
王道考研机式指南02
查看>>
王道考研机式指南03
查看>>
王道考研机试04
查看>>
Old Bill(上海交通大学复试上机题)以及此题解决时,学到了一些知识。
查看>>
二维数组中的查找:
查看>>
替换空格
查看>>
输入一个链表,按链表从尾到头的顺序返回一个ArrayList
查看>>
重建二叉树
查看>>
两个栈实现队列
查看>>
No Access-Control-Allow-Origin header is present on the requested resource 解决跨域资源共享问题
查看>>