1、程序包编译安装流程:

src格式的源码包可以根据CPU的平台灵活编译安装使用

testapp-VERSION-release.src.rpm --> 安装后,使用rpmbuild命令制作成二进制格式的rpm包,而后再安装;

从源代码到被使用的过程:

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

源代码组织格式:

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

项目管理器(代码管理工具):能够根据配置文件实现自动完成大多复杂步骤

C、C++: make (configure --> Makefile.in --> makefile)

java: maven

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

2、C代码编译安装三步骤:

(1) ./configure:

(a) 通过选项传递参数,指定启用特性、安装路径等;执行时会参考用户的指定以及Makefile.in文件生成makefile;

(b) 检查依赖到的外部环境;

(2) make:

根据makefile文件,构建应用程序;

(3) make install

将生成的可执行文件或者生成的库拷贝到相应的目录

开发工具:

autoconf: 生成configure脚本

automake:生成Makefile.in文件

建议:安装前查看INSTALL,README

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

3、开源程序源代码的获取:

(1) 官方自建站点:

apache.org (ASF)

mariadb.org

...

(2) 代码托管站点:

SourceForge

Github.com

code.google.com

...

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

4、编译安装源代码:

编译器:

c/c++: gcc (GNU C Complier)

编译C源代码:

前提:提供开发工具及开发环境

开发工具:make, gcc等

开发环境:开发库,头文件

glibc:标准库

通过“包组”提供开发组件

CentOS 6: "Development Tools", "Server Platform Development", ...

CentOS 7:"Development Tools"

第一步:configure脚本

选项:指定安装位置、指定启用的特性

--help: 获取其支持使用的选项

选项分类:

安装路径设定:

--prefix=/PATH/TO/SOMEWHERE: 指定默认安装位置;默认为/usr/local/

--sysconfdir=/PATH/TO/SOMEWHERE:指定配置文件安装位置;

System types:指定编译时的系统类型,实现交叉编译(例如在x86_64平台上编译可以在PowerPC平台上运行的程序)

Optional Features: 可选特性

--disable-FEATURE 禁用指定特性

--enable-FEATURE[=ARG] 启用指定特性

Optional Packages: 可选包(依赖到的其他程序包)

--with-PACKAGE[=ARG] 必须使用指定的程序包

--without-PACKAGE 不使用指定的程序包

第二步:make

第三步:make install

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

5、安装后的配置:

(1) 导出二进制程序目录至PATH环境变量中;(不指定环境变量则只能使用绝对路径了)

编辑文件/etc/profile.d/NAME.sh

export PATH=/PATH/TO/BIN:$PATH

(2) 导出库文件路径

编辑/etc/ld.so.conf.d/NAME.conf

添加新的库文件所在目录至此文件中;

让系统重新生成缓存:

ldconfig [-v]

(3) 导出头文件

基于链接的方式实现:

ln -sv

(4) 导出帮助手册

编辑/etc/man.config文件

添加一个MANPATH

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

示例:CentOS 6

1、安装编译环境gcc工具

2、查看是否提供了gcc工具

3、下载源码包,解包释放出源代码文件

4、可以查看INSTALL的安装说明

5、可以使用configure --help获取configure的使用帮助

6、安装CentOS6的开发包组,提供开发组件

7、执行configure脚本指定默认安装位置以及配置文件的位置

8、执行make,根据makefile文件,构建应用程序

9、执行make install,将生成的可执行文件或者生成的库拷贝到相应的目录

10、安装完成就可以在安装目录下看到生成的对应的目录了

11、执行bin目录下的apachectl脚本,启动httpd服务

12、查看80端口是否处于监听状态,是则表示服务已启动

转载于:https://blog.51cto.com/coffeeyep/1729927

程序包管理之编译安装相关推荐

  1. linux 程序包管理5 编译安装

    1.二进制程序的访问方法vim /etc/profile.d/apache.shPATH=/usr/local/apache/bin:/usr/local/apache/sbin=$PATHexpor ...

  2. Linux 程序包管理-YUM

    前端工具YUM管理程序包:   rpm管理软件虽然方便,但是需要手工解决软件包的依赖关系:很多时候安装一个软件需要首先安装一个或多个(有时多达上百个)其它软件,手工解决很复杂:使用yum可以解决这个问 ...

  3. 程序包管理rpm、yum与简单编译安装程序

    Linux程序包管理 Linux中软件的安装主要有两种形式:一种是直接下载源代码包自行编译后安装,另一种直接获取rpm软件包进行安装. 程序的组成部分: 二进制程序:程序的主体文件,比如我们运行一个l ...

  4. linux程序包管理rpm,yum和编译安装以及冒泡排序练习

    linux程序包管理: API:Application Programming Interface POSIX:Portable OS 程序源代码--> 预处理--> 编译--> 汇 ...

  5. 2018-3-24Linux系统管理(13)程序包管理(3)yum前端配置及编译

    我们在这一章当中继续讲述yum命令,而后我们简单讲述一下源代码安装包的编译及使用. 一.yum的命令行选项 我们在yum的配置文件中,一旦gpgckeck=1时,就意味着我们安装程序包时,必须要检查g ...

  6. Linux文件查找与tar包管理、企业级sed应用 软件包管理与编译安装httpd

    总结 第7节 Linux文件查找与tar包管理.企业级sed应用 使用locate命令 使用find命令 压缩和解压缩工具 01-文件搜索 locate (00:02:30) locate test. ...

  7. 怎么用nuget程序包管理器安装jquery_Nuget服务器

    搭建Nuget服务端 在Microsoft Visual Studio的空ASP.NET Web应用程序项目安装NuGet.Server,并以方式文件发布项目. 1.1.Vs中新建ASP.NET We ...

  8. Linux下程序包管理工具RPM

    实验环境: CentOS release 6.6 (Final)  一台 IP地址:172.16.249.230 RPM 是 Red Hat Package Manager 的缩写,本意是Red Ha ...

  9. Linux学习笔记:rpm程序包管理

    以CentOS为例,rpm程序包管理器的相关内容如下: CentOS的程序包管理器:     程序包的命名规则:         源代码包:             software_name-VER ...

  10. 以rpm为后端及以yum为前端工具的程序包管理器在Linux发行版系统centos中的使用...

    程序包管理: 应用程序的安装,实际上是解压缩并复制程序包中的文件到指定目录的过程: 程序包管理器: 方便终端用户进行程序的安装.卸载.升级.安装信息查询及校验等工作: 不同的Linux的发行版本中,有 ...

最新文章

  1. Android中service应用
  2. volcanol_Linux_问题汇总系列_1_系统引导过程中到check filesystem时就无法继续引导问题解决方法。...
  3. 线性方程组与基尔霍夫定律
  4. 果断收藏!156页PPT全景展现全球区块链发展(附完整版下载手册)
  5. spark运行pi_如何使用甜蜜的橙色Pi起床并运行
  6. 项目疑难杂症记录(一):fragment单例导致的界面异常
  7. 利用阿里云LAMP环境搭建搭建wiki知识库
  8. JavaScript运动应用一
  9. 【又见LCS】NYOJ-37 回文字符串
  10. 关联分析购物篮案例python_购物篮分析案例_关联分析算法_如何做销售数据分析 – 帆软...
  11. 软件设计模式与体系结构(入门基础知识)
  12. 台式计算机驱动程序未被安装,Win10提示该设备的驱动程序未被安装。(代码28)
  13. 将excel单元格内的中英文分离
  14. Windows程式开发设计指南--开始
  15. php 牛顿冷却定律,基于用户投票的排名算法(四):牛顿冷却定律
  16. linux内核page结构体的PG_referenced和PG_active标志
  17. FaaS(功能即服务)
  18. 人工智能与复杂网络_为什么我与智能手机的关系变得复杂
  19. flink sql 知其所以然(八):flink sql tumble window 的奇妙解析之路
  20. 计算机教室规则英语,有没有关于教室规则 的英文

热门文章

  1. mac 10.9 安装 mysql_mac 下安装 mysql (蛋疼)
  2. 斯坦福大学自然语言处理第二课“文本处理基础(Basic Text Processing)”
  3. cookielib和urllib2模块相结合模拟网站登录
  4. 【2016-2017 ACM-ICPC (ECNA 2016) G】That's one Hanoi-ed Teacher【汉诺塔问题】
  5. LaTeX中的魔法注释
  6. 对象三大特性:封装、继承、多态。通俗易懂!!看完还不懂来打我!!!超详细!!涉及各种重要基础
  7. linux挂载硬盘不适合重启,Linux分区g挂载目录不重启挂载硬盘
  8. redis实现高并发下的抢购/秒杀功能
  9. 基于Redis消息的订阅发布应用场景
  10. Python编程-继承和接口