我作为一名经常和linux打交道的程序员,每次在linux安装软件都祈求可以用——apt-get,yum,brew等应用程序管理器安装,有的时候事与愿违,你只能自己编译安装~wtf,说好的美丽世界呢?

这个时候你就用会用到标题上的:

configure, make, make install这四个指令,每当这个时候我的发怵 ,今天我忍不了了,我要把他们弄清楚,所以画了一整个中午的时间好好研究了它们。

不说百分之百都弄懂了,但是下次再编译安装的时候,嘿嘿。下面分享下我的收获:

后来我发现,这么直接说不直观,同时发现我的ubuntu上没有vim,索性:我就用编译的方法安装vim,配合着这些文字,希望大家看完可以跟清晰明了!

1.源文件

我用git clone下vim的源文件

git clone https://github.com/vim/vim.git

vim的源文件如下:

这个时候你down下来(关键词——git clone或 wget 或 curl)得到的文件,有可能是压缩包。也有可能就是个一堆文件(git clone下来的)

2.configure

一般网上的步骤:

./configure ——这里新手有可能会执行不了,这里解释下“./”——当前目录的意思,这个是相对路径。搜索关键词:绝对路径和相对路径

configure:是一个shell脚本,它在源文件的根目录中。他的作用是检查你的系统中是否有编译这个程序依赖的其它库之类的东西。

如果在windows下安装过大型游戏的小伙伴就知道那种感觉了。如果configure脚本检查编译环境不完整(需要的其它软件你没有安装或者找不到——路径不对没有关联上)。

就会中断,你必须解决它报告出来的error,才能进行下一步。

需要注意的一点:prefix参数——指定安装路径(安装到哪里),这个一定要指定,否则你不知道默认安装到哪里,不方便以后的管理

其它参数——搜索关键词:configure 参数

下面我运行:configure脚本并加上prefix参数(我要安装到root/learn_install目录下):

检查环境的时候遇到问题(这个就是需要依赖其它库):

搜索之后,解决方案如下:

安装完terminal library,重新运行configure脚本,成功!

make工具的来源是因为:

源文件多了可真是件让人头疼的事。幸运的是,实用程序make可以帮我们解决这两个问题——当程序的源文件改变后,它能保证所有受影响的文件都将重新编译,而不受影响的文件则不予编译,这真是太好了。

make:

make指令最基本的功能就是通过makefile文件来描述源程序之间的相互关系并自动维护编译的工作。

Makefile:这个文件是按照特定的语法编写的,文件中说明了,如何编译的各个源文件并链接生成可执行文件,并要求定义

源文件之间的依赖关系。

简单的说就是定义好源文件之间的依赖关系,并编译(这里是编译,不是检查)。

我认为就相当于:编译一边import中所有的模块,这样执行源文件的时候,就可以顺利执行了~(我是pythoner,c++貌似是include)

make完成:

make install:

执行完这条命令,安装完成,你会发现,在执行configure的时候prefix指定的安装路径,出现了~

  下面是我第一步执行的:

下面我运行:configure脚本并加上prefix参数(我要安装到root/learn_install目录下):

结果如下:

vim就在bin目录下。执行:/root/learn_install/bin/vim

但是还有最后一个问题,一般我们用vim的时候,无论在任何地方输入:vim都可以,但是现在就不行了。只能到这个/root/learn_install/bin目录下执行./vim才能执行.

这是因为:

你键入的指令都是在这些目录中查找,所以输入vim,他还是提示你没有安装。

所以我们可以建立一个软连接到/usr/bin目录下:

关键词:ln 软链接

这个不是我矫情啊,我一般都是用vi指令,但是vim是vi的升级版我干嘛放着plus不用,所以搜索一下,关键词:alias

输入:alais vi="vim"(这种方式重启后失效)

ok啦,这个时候你在哪里输入vi都可以了,嘿嘿

[linux笔记]理清linux安装程序用到的(configure, make, make install)的更多相关文章

  1. 【Linux笔记】Linux目录结构

    [Linux笔记]Linux目录结构   本文内容整理自网络,以作参考. /:根目录,位于linux文件系统目录结构的顶层,一般根目录下只存放目录,不要存放文件,/etc./bin./dev./lib ...

  2. Linux源码编译安装程序

    一.程序的组成部分 Linux下程序大都是由以下几部分组成: 二进制文件:也就是可以运行的程序文件 库文件:就是通常我们见到的lib目录下的文件 配置文件:这个不必多说,都知道 帮助文档:通常是我们在 ...

  3. linux 下通过源代码安装程序 ./configure 解释

    大家 都知道在 linux 通过源代码 安装程序 1. 下载源码 2.解压缩 3. 执行 ./configure 4. make 5 make install make 命令 是对 makefile ...

  4. 『学了就忘』Linux软件包管理 — 49、拓展:Linux中通过脚本安装程序

    目录 1.脚本程序简介 2.Webmin安装 (1)简介 (2)安装 (3)使用 1.脚本程序简介 脚本程序包并不多见,所以在软件包分类中并没有把它列为一类.它更加类似于Windows下的程序安装,有 ...

  5. linux笔记:linux系统安装-vmware虚拟机安装

    vmware版本:vmware8(百度云里备份了安装程序VMware_Workstation_wmb.zip) vmware软件安装过程: 1.在百度云中下载安装程序压缩包VMware_Worksta ...

  6. Linux源码包安装程序

    ★安装OS时,建议提前安装开发组件 CentOS 6:Development Tools.Server Platform DevelopmentCentOS 7:Development Tools.D ...

  7. Linux下编译安装源码包软件 configure ,make, make install, make test/check, make clean

    http://www.360doc7.net/wxarticlenew/541275971.html 一.什么是源码包软件? 顾名思义,源码包就是源代码的可见的软件包,基于Linux和BSD系统的软件 ...

  8. Linux下编译安装源码包软件 configure ,make, make install, make test/check, make clean 假目标

    http://www.360doc7.net/wxarticlenew/541275971.html 一.程序的组成部分 Linux下程序大都是由以下几部分组成: 二进制文件:也就是可以运行的程序文件 ...

  9. linux笔记:linux软件包管理,软件安装位置

    linux软件包简介 软件包分类:1.源码包(用C语言等编写的源代码,没有进行编译):脚本安装包(对源码包进行了安装优化的源码包)优点:开源,可修改可以自由选择所需的功能编译安装,更适合自己的系统,稳 ...

随机推荐

  1. Activiti 流程实例、任务、执行对象及相关的表

    一个流程中,流程实例只有一个,执行对象可以有多个(如果存在分支和聚合) SELECT * FROM activiti.act_ru_execution a;  #正在执行的执行对象表 SELECT * ...

  2. 解决12306.cn网站验证码获取提示“基础连接已经关闭: 未能为 SSL/TLS 安全通道建立信任关系“的问题

    https://dynamic.12306.cn/otsweb/passCodeAction.do?rand=sjrand&0.8967564508222368 这是图片的访问网址 大家看清楚 ...

  3. Cocos2dx.3x入门三部曲-Hello Game项目解析(三)

    一.前提: 完成Hello Game项目的创建编译. 具体参考:Cocos2dx.3x_Hello Game项目创建篇 二.本篇目标: l  分析proj.win32工程的主要构成 l  分析proj ...

  4. iOS 9 failed for URL: "XXX://@" - error: "This app is not allowed to query for scheme XXX" iOS 从APP里启动另一APP

    iOS 从C APP里启动 D APP 首先在D APP里设置 URL Schemes 在info.plist 文件里添加URL Schemes URL Types -->item0 --> ...

  5. Node-restify 简介

    restify 是Node.js的模块.虽然restify的API或多或少的参考了express,但restify不是一个MVC框架,它是一套为了能够正确构建REST风格API而诞生的框架. http ...

  6. C++ 记事本: 变量

    C++ 变量也许和其他语言的变量没有什么差别.就是用来存储一些可能会变值的容器. 当然 C++ 变量里又分为 原子类型 的(int , char ,bool 等等),复合类型 的(struct ,cl ...

  7. ld: library not found for -lPods-AFNetworking

    工程新添加了 AFNetworking  使用pod ,pod install 完成后,编译报错 ld: library not found for -lPods-AFNetworkingclang: ...

  8. JavaScript日期对象使用总结

    javascript Date日期对象的创建 创建一个日期对象: var objDate=new Date([arguments list]); 我总结了参数形式主要有以下3种: new Date(& ...

  9. ASP.NET弹出显示ex.Message异常信息 存在换行符和回车符处理办法。

    1.把ex.Message换成任意字符串,检验在catch语句块中可以用Response.Write方法显示对话框.结果显示成功,说明问题就出在ex.Message上. 2.在程序中下断点,可以看到e ...

  10. Windows下msysGit使用及相关配置

    Windows下msysGit使用 目前我们git通过ssh进行通信,所以需要你也安装ssh以及将ssh key发给我,省得每次都需要输入用户名和密码 1.创建工程目录 windows下进入msysG ...