[linux笔记]理清linux安装程序用到的(configure, make, make install)
我作为一名经常和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)的更多相关文章
- 【Linux笔记】Linux目录结构
[Linux笔记]Linux目录结构 本文内容整理自网络,以作参考. /:根目录,位于linux文件系统目录结构的顶层,一般根目录下只存放目录,不要存放文件,/etc./bin./dev./lib ...
- Linux源码编译安装程序
一.程序的组成部分 Linux下程序大都是由以下几部分组成: 二进制文件:也就是可以运行的程序文件 库文件:就是通常我们见到的lib目录下的文件 配置文件:这个不必多说,都知道 帮助文档:通常是我们在 ...
- linux 下通过源代码安装程序 ./configure 解释
大家 都知道在 linux 通过源代码 安装程序 1. 下载源码 2.解压缩 3. 执行 ./configure 4. make 5 make install make 命令 是对 makefile ...
- 『学了就忘』Linux软件包管理 — 49、拓展:Linux中通过脚本安装程序
目录 1.脚本程序简介 2.Webmin安装 (1)简介 (2)安装 (3)使用 1.脚本程序简介 脚本程序包并不多见,所以在软件包分类中并没有把它列为一类.它更加类似于Windows下的程序安装,有 ...
- linux笔记:linux系统安装-vmware虚拟机安装
vmware版本:vmware8(百度云里备份了安装程序VMware_Workstation_wmb.zip) vmware软件安装过程: 1.在百度云中下载安装程序压缩包VMware_Worksta ...
- Linux源码包安装程序
★安装OS时,建议提前安装开发组件 CentOS 6:Development Tools.Server Platform DevelopmentCentOS 7:Development Tools.D ...
- Linux下编译安装源码包软件 configure ,make, make install, make test/check, make clean
http://www.360doc7.net/wxarticlenew/541275971.html 一.什么是源码包软件? 顾名思义,源码包就是源代码的可见的软件包,基于Linux和BSD系统的软件 ...
- Linux下编译安装源码包软件 configure ,make, make install, make test/check, make clean 假目标
http://www.360doc7.net/wxarticlenew/541275971.html 一.程序的组成部分 Linux下程序大都是由以下几部分组成: 二进制文件:也就是可以运行的程序文件 ...
- linux笔记:linux软件包管理,软件安装位置
linux软件包简介 软件包分类:1.源码包(用C语言等编写的源代码,没有进行编译):脚本安装包(对源码包进行了安装优化的源码包)优点:开源,可修改可以自由选择所需的功能编译安装,更适合自己的系统,稳 ...
随机推荐
- 聊天IM的时间戳显示规则
====================================================== 以下规则是在体验微信操作后,推测出来的规则,可能存在一些不准确的表述 ========== ...
- JVM中的Stack和Frame
JVM执行Java程序时需要装载各种数据,比如类型信息(Class).类型实例(Instance).常量数据(Constant).本地变量等.不同的数据存放在不同的内存区中,这些数据内存区称作“运行时 ...
- HTTP请求报文和HTTP响应报文(转)
原文地址:http://blog.csdn.net/zhangliang_571/article/details/23508953 HTTP报文是面向文本的,报文中的每一个字段都是一些ASCII码串, ...
- 正在使用MJRefresh & MJExtension的App
框架地址:https://github.com/CoderMJLee已经有上百个App用到了MJRefresh & MJExtension框架(只列出了其中一部分App):
- 准备开源一套异形UI控件
今天整理磁盘,发现在一个以前加密过的一个磁盘文件中发现了一些以前做的UI代码.平时都没怎么去用,放着放着只会慢慢的去遗忘,所以打算慢慢的将一些UI代码整理整理,然后开源出来,集合广大Delphier的 ...
- Navi.Soft30.开放平台.腾讯.开发手册
1系统简介 1.1功能简述 现在是一个信息时代,并且正在高速发展.以前获取信息的途径非常少,可能只有电视台,收音机等有限的来源,而现在的途径数不胜数,如:QQ,微信,官方网站,个人网站等等 本开发手册 ...
- Spark 实时计算整合案例
1.概述 最近有同学问道,除了使用 Storm 充当实时计算的模型外,还有木有其他的方式来实现实时计算的业务.了解到,在使用 Storm 时,需要编写基于编程语言的代码.比如,要实现一个流水指标的统计 ...
- u3d动态加入模型
楼层一层一层的加,把模型分开,弄成prefab放到Resourse文件夹里,在代码里用Instantiate(Resources.Load("模型名字") as GameObjec ...
- 删除Visual Studio Online 中团队项目
最新文章:Virson's Blog 方法1:使用TFSDeleteProject删除: 1).在本地Visual Studio中登录云端TFS服务器: 2). 连接成功之后,打开VS命令工具,下图红 ...
- [原创]HierarchyView的实现原理和Android设备无法使用HierarchyView的解决方法
最近在看一个老外写的东西,发现里面有个类,使用这个类可以让任何设备使用HierarchyView. 众所周知,市面上卖的Android设备,一般都不能使用HierarchyView,所以借此机会,了解 ...