程序包编译安装的步骤:

源代码-->预处理-->编译-->汇编-->链接-->执行

多文件:文件中的代码之间,很可能存在跨文件依赖关系

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 源码编译安装软件的更多相关文章

  1. Linux源码编译安装httpd

    Linux安装软件采用源码编译安装灵活自由,适用于不同平台,维护也十分方便. 源码编译的安装方式一般由3个步骤组成: 1.配置(configure) 2.编译(make) 3.安装(make inst ...

  2. linux源码编译安装OpenCV

    为了尽可能保证OpenCV的特性,使用OpenCV源码编译安装在linux上.先从安装其依赖项开始,以ubuntu 14.04.X为例讲解在Linux上源码编译安装OpenCV,其他linux版本可以 ...

  3. Linux源码编译安装程序

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

  4. Linux源码编译安装MySQL5.7

    目录[-] 一.环境准备: 二.升级系统: 三.做一些准备工作(以下Linux命令均在su到root用户操作): 四.开始编译安装mysql-5.7.9: 一.环境准备: 我尝试过以下环境都是能成功的 ...

  5. Linux源码编译安装php7.2

    以下简单的介绍下如何源码安装PHP,对于版本不一定是7.2,也可以是7.3,当然方法都是换汤不换药的,核心东西不变. 一.下载PHP源码 需要到指定的路径下载源码,执行下面的命令 wget http: ...

  6. 部署maria数据库到linux(源码编译安装)

    maria数据库是mysql原作者另外开发的一个版本,使用方法和mysql一样,可以直接用mysql的库连接. 在这下载包并解压: https://mariadb.org/download/ 建立数据 ...

  7. linux源码编译安装php出现 cannot find -lltdl

    原因: 在编辑php时添加的“–with-mcrypt”选项造成. 解决方法: 1.如果不需要mcrypt,那么编辑php时去掉该选项,然后再make.make install. 2.如果需要mcry ...

  8. 部署mariadb数据库到linux(源码编译安装)

    各种库: apt install -y build-essential zlib1g-dev libpcre3 libpcre3-dev unzip cmake libncurses5-dev lib ...

  9. Linux源码编译安装php7.3

    ---恢复内容开始--- ps:一切从简 一.安装所需环境 yum -y install libxml2 libxml2-devel openssl openssl-devel curl-devel ...

随机推荐

  1. Python Json分别存入Mysql、MongoDB数据库,使用Xlwings库转成Excel表格

    将电影数据 data.json 数据通过xlwings库转换成excel表格,存入mysql,mongodb数据库中.python基础语法.xlwings库.mysql库.pymongo库.mongo ...

  2. Java语言学习day04--7月1日

    ###09数据类型转换_自动转换     * A:   自动类型转换         * a:表示范围小的数据类型转换成范围大的数据类型,这种方式称为自动类型转换             自动类型转 ...

  3. 2021.12.07 P4291 [HAOI2008]排名系统(Treap)

    2021.12.07 P4291 [HAOI2008]排名系统(Treap) https://www.luogu.com.cn/problem/P4291 双倍经验: https://www.luog ...

  4. Rust如何开发eBPF应用(一)?

    前言 eBPF是一项革命性的技术,可以在Linux内核中运行沙盒程序,而无需重新编译内核或加载内核模块.它能够在许多内核 hook 点安全地执行字节码,主要应用在云原生网络.安全.跟踪监控等方面. e ...

  5. Vagrant详细教程

    一.安装virtualBox 进入 VirtualBox 的主页,即可进入下载页面. VirtualBox 是一个跨平台的虚拟化工具,支持多个操作系统,根据自己的情况选择对应的版本下载即可. 在安装完 ...

  6. 【openstack】红帽公开课笔记内容openstack

    overcloud节点自省失败(introspection) 节点自省--获取overcloud

  7. 灵感乍现!造了个与众不同的Dubbo注册中心扩展轮子

    hello大家好呀,我是小楼. 作为一名基础组件开发,服务好每一位业务开发同学是我们的义务(KPI). 客服群里经常有业务开发同学丢来一段代码.一个报错,而我们,当然要微笑服务,耐心解答. 有的问题, ...

  8. 利用腾讯云函数部署.Net 5米游社原神每日签到功能

    自从GitHub批量禁止滥用Action功能后,项目不得不考虑另外方案执行应用.其中腾讯云函数被大家作为不错的选择(虽然马上也要收费了). 但对于.Net的部署目前资源很少,而且我也没学过bash.在 ...

  9. 《手把手教你》系列基础篇(九十七)-java+ selenium自动化测试-框架设计篇-Selenium方法的二次封装和页面基类(详解教程)

    1.简介 上一篇宏哥介绍了如何设计支持不同浏览器测试,宏哥的方法就是通过来切换配置文件设置的浏览器名称的值,来确定启动什么浏览器进行脚本测试.宏哥将这个叫做浏览器引擎类.这个类负责获取浏览器类型和启动 ...

  10. Centos7最小化安装报错There are no enabled repos. Run "yum repolist all" to see the repos you have.解决办法

    原因是缺少CentOS-Base.repo文件,因为我这台机器wget也不能用,所以我是下载到本地sftp上去的,传输的时候一定要在root用户下,否则会无法启动传输 这是报错的完整信息:Loadin ...