Linux 源码编译安装软件
程序包编译安装的步骤:
源代码-->预处理-->编译-->汇编-->链接-->执行
多文件:文件中的代码之间,很可能存在跨文件依赖关系
1.编译源码的项目工具
使用相关的项目管理工具可以大大减少编译过程的复杂度
工具分类:
根据源码类型来对这些工具进行分类
C、C++的源码编译: make 项目管理器
configure脚本 --> Makefile.in --> Makefile
相关开发工具:
autoconf: 生成configure脚本
automake:生成Makefile.in
java的源码编译: 使用 maven
2. C 语言源代码编译安装过程
利用编译工具,只需要三个步骤:
执行confige脚本后生成makefile文件,调用makefile文件生成二进制程序,安装二进制程序。
1. ./configure --- 官方提供的脚本,功能是生成makefile文件
2. make makefile_name --- 自动调用makefile文件定义的信息检查依赖环境并编译生成二进制程序(这个时候并不会安装)
3. make instal --- 把生成的二进制文件按照指定的路径复制到对应路径下面。
步骤一 执行configure脚本:
编译安装需要编译每一个源码文件,而且每个文件之间可能存在依赖关系、编译的顺序也有先后之分。所以很繁琐、困难。
rpm、yum:批量安装 源码安装:私人定制
(1) 允许添加安装的信息(安装路径、需要启用的功能);执行时会参考用户的指定以及Makefile.in文件生成Makefile
(2) 检查依赖到的外部环境,如依赖的软件包
步骤二:生成二进制文件
根据Makefile文件,会检测依赖的环境,进行构建应用程序
make选项:
-j num(cpu核数) --- 多任务。指定使用多颗cpu进行同时编译
步骤三:把文件安装到对应的目录下
复制文件到相应路径
注意:安装前可以通过查看README,INSTALL获取帮助
编译安装准备
准备:安装相关的依赖包
开发工具:make, gcc (c/c++编译器GNU C Complier)
开发环境:开发库(glibc:标准库),头文件,可安装开发包组 Development Tools
软件相关依赖包
编译安装
第一步:运行 configure 脚本,生成 Makefile 文件
- 其选项主要功能:
- 可以指定安装位置
- 指定启用的特性(启用什么功能)
执行这个命令的时候还会检查编译过程所依赖的文件是否都存在。
获取其支持使用的选项: ./configure --help
选项:
设置安装路径和其他一些信息
安装路径设定
--prefix=/PATH:指定默认安装位置,默认为/usr/local/
--sysconfdir=/PATH:配置文件安装位置
软件特性和相关指定:
Optional Features: 可选特性
--disable-FEATURE
--enable-FEATURE[=ARG]
Optional Packages: 可选包
--with-PACKAGE[=ARG] 依赖包
--without-PACKAGE 禁用依赖关系
注意:通常被编译操作依赖的程序包,需要安装此程序包的"开发"组件,其包名一般类似于namedevel-VERSION
第二步:make
执行make命令需要调用gcc这个工具,所以需要提前安装gcc工具
第三步:make install
安装后的配置
1. 二进制程序目录导入至PATH环境变量中,编辑文件/etc/profile.d/NAME.sh
export PATH=/PATH/TO/BIN:$PATH
2. 相关用户及文件
有些开源软件编译完成后,还需要创建相关的用户及文件
3. 导入帮助手册
编辑/etc/man.config|man_db.conf文件,添加一个MANPATH
编译安装实战案例
源码一般存放在: /usr/loacl/src 里面
编译安装的前提:需要首先安装 gcc make autoconf gcc-c++ glibc glibc-devel等工具
遇到不明确的错误就删除文件夹,重新解压从头来一次。
官网下载并编译安装新版 tree
1.使用rpm -qi tree 查看trr命令的官网下载最新版本。
2.将下载的文件使用tar命令解压到指定的目录
某些程序过于简单,所以就直接提供了makefile文件,没提供config脚本。直接make就行了。因为confige的目的就是生成makefile文件。
3. 执行make命令生成进制程序
4. 使用make install 命令安装二进制程序到指定的文件夹
创建软连接将二进制可执行文件链接到path变量的路径中去。
编译安装 cmatrix
1.下载源码包 -- wget -q https://jaist.dl.sourceforge.net/project/cmatrix/cmatrix/1.2a/cmatrix-1.2a.tar.gz
2. 解压源码包
3.使用configure脚本生成makefile文件(自带的makefile文件内容太多,更改起来不方便)
出现这个说明configure执行完成了
4. 执行make命令出现如下错误
解决方法:
没有查到,路径有问题 改为 yum provides */xxx
一般都是带devel的那个包
再次执行make命令
出现这种不明确的错误,没有说缺什么文件(一般是程序包需要提前安装)
解决方法:删除掉文件夹重新解压再执行一次。
验证:
修改path变量的方法: echo 'PATH=url:$PATH' > shell配置文件
首先进行命令替换:取出$PATH原有的内容,然后把url加在原有内容后面,在复制给PATH。
Linux 源码编译安装软件的更多相关文章
- Linux源码编译安装httpd
Linux安装软件采用源码编译安装灵活自由,适用于不同平台,维护也十分方便. 源码编译的安装方式一般由3个步骤组成: 1.配置(configure) 2.编译(make) 3.安装(make inst ...
- linux源码编译安装OpenCV
为了尽可能保证OpenCV的特性,使用OpenCV源码编译安装在linux上.先从安装其依赖项开始,以ubuntu 14.04.X为例讲解在Linux上源码编译安装OpenCV,其他linux版本可以 ...
- Linux源码编译安装程序
一.程序的组成部分 Linux下程序大都是由以下几部分组成: 二进制文件:也就是可以运行的程序文件 库文件:就是通常我们见到的lib目录下的文件 配置文件:这个不必多说,都知道 帮助文档:通常是我们在 ...
- Linux源码编译安装MySQL5.7
目录[-] 一.环境准备: 二.升级系统: 三.做一些准备工作(以下Linux命令均在su到root用户操作): 四.开始编译安装mysql-5.7.9: 一.环境准备: 我尝试过以下环境都是能成功的 ...
- Linux源码编译安装php7.2
以下简单的介绍下如何源码安装PHP,对于版本不一定是7.2,也可以是7.3,当然方法都是换汤不换药的,核心东西不变. 一.下载PHP源码 需要到指定的路径下载源码,执行下面的命令 wget http: ...
- 部署maria数据库到linux(源码编译安装)
maria数据库是mysql原作者另外开发的一个版本,使用方法和mysql一样,可以直接用mysql的库连接. 在这下载包并解压: https://mariadb.org/download/ 建立数据 ...
- linux源码编译安装php出现 cannot find -lltdl
原因: 在编辑php时添加的“–with-mcrypt”选项造成. 解决方法: 1.如果不需要mcrypt,那么编辑php时去掉该选项,然后再make.make install. 2.如果需要mcry ...
- 部署mariadb数据库到linux(源码编译安装)
各种库: apt install -y build-essential zlib1g-dev libpcre3 libpcre3-dev unzip cmake libncurses5-dev lib ...
- Linux源码编译安装php7.3
---恢复内容开始--- ps:一切从简 一.安装所需环境 yum -y install libxml2 libxml2-devel openssl openssl-devel curl-devel ...
随机推荐
- Java学习day26
进程.多任务 1.例如吃饭的时候玩手机,边上厕所边玩手机,看似是同时做多个事情,本质上我们的大脑在同一时间只做了一件事情,这就是多任务 2.道路窄的时候容易造成拥堵,可以拓宽道路,加多车道,同一个方向 ...
- 前端vue之属性指令、style和class、条件渲染、列表渲染、事件处理、数据双向绑定、表单控制、v-model进阶
今日内容概要 属性指令 style和class 条件渲染 列表渲染 事件处理 数据的双向绑定 v-model进阶 购物车案例 内容详细 1.属性指令 <!DOCTYPE html> < ...
- switch 和 if else if else 有什么区别
1. 一般情况下,它们两个语句可以相互替换 2. switch..case语句通常处理case为比较确定值的情况,而if...else...语句更加灵活,常用于范围判断(大于.等于某个范围) 3. ...
- Vue2响应式原理
vue2响应式原理 vue的特性:数据驱动视图和双向数据绑定.vue官方文档也提供了响应式原理的解释: 深入响应式原理 Object.defineProperty() Object.definePro ...
- WebSocket 协议详解
一.WebSocket 协议背景 早期,在网站上推送消息给用户,只能通过轮询的方式或 Comet 技术.轮询就是浏览器每隔几秒钟向服务端发送 HTTP 请求,然后服务端返回消息给客户端. 轮询技术一般 ...
- PicLite 开发日志 (v0.0.3)
PicLite 开发日志 (v0.0.3) 感谢您阅读本片文章! Gitee 地址:https://gitee.com/XiaoQuQuSD/pic-lite. 新增功能 当错误出现时不再强制 rai ...
- 【笔记】排查CPU占用过高
本文是该教程视频的笔记 https://www.bilibili.com/video/BV15T4y1y7eH 1. 问题演示 将演示项目打包放到服务器运行 执行 curl http://localh ...
- [题解][YZOJ50113] 枇杷树
简要题意 \(m\) 个操作,每次操作都会产生一个树的版本 \((\)从 \(0\) 开始\()\). 一次操作把 \(x_i\) 版本的树的点 \(u\) 和 \(y_i\) 版本的树的点 \(v\ ...
- ClickHouse 对付单表上亿条记录分组查询秒出, OLAP应用秒杀其他数据库
1. 启动并下载一个clickhouse-server, By default, starting above server instance will be run as default user ...
- windows 存储和切换 ip 配置
我的虚拟机用的是桥接模式,在公司使用时设置的是静态 ip,但网段和家里面的不一样,就导致在公司和家里,我需要频繁修改 ipv4 的配置以适应不同的网络环境 Simple-IP-Config 工具解决了 ...