Linux源码编译安装程序

  一、程序的组成部分

    Linux下程序大都是由以下几部分组成:

      二进制文件:也就是可以运行的程序文件

      库文件:就是通常我们见到的lib目录下的文件

      配置文件:这个不必多说,都知道

      帮助文档:通常是我们在linux下用man命令查看的命令的文档

  二、linux下程序的存放目录

    linux程序的存放目录大致有三个地方:

      /etc, /bin, /sbin, /lib  :系统启动就需要用到的程序,这些目录不能挂载额外的分区,必须在根文件系统的分区上

      /usr/bin,/usr/sbin,/usr/lib:操作系统核心功能,可以单独分区

      /usr/local/bin,/usr/local/sbin,/usr/local/lib,/usr/local/etc,/usr/local/man:这个用于安装第三方程序,分别对应了二进制文件、库文件、配置文件、帮助文档的目录

    通常来说我们安装程序就安装在 /usr/local目录下

 三、编译安装源程序

    1、使用如下命令查看当前是否安装了gcc编译器,没有可以先用yum安装gcc

gcc --version  #查看是否安装gcc

 

     2、解压源码包,例如:

tar -xvf nginx-1.7.7.tar.gz #解压源码包

    3、进入解压好的源码包:

cd nginx-1.7.7 #进入源码包

 

     4、执行configure文件,此文件有两个功能:1、让用户选定编译特性;2、检查编译环境。configure执行后将生成MakeFile文件。例如:

./configure --prefix=/usr/local/nginx --conf-path=/etc/nginx/nginx.conf

 

       其中我们通过--prefix制定了安装路径,通过--conf-path制定了配置文件的具体位置。注意:不是所有的程序的configure参数都是一样的 可以使用 ./configure --help查看详细参数说明。如果该程序所依赖的库在当前系统中没有安装,则会导致configure最后报错,遇到这种情况就需要你先安装依赖库。

    5、执行make命令,编译程序

make

    6、编译成功后就可以安装了,执行如下命令

make install

  到此程序就算安装完成了,但是不要忘了还有后续的配置哦

  四、配置程序

    1、修改PATH环境变量,以能够识别此程序的二进制文件路径;

      修改/etc/profile文件,在文件中 添加

export PATH=$PATH:/path/to/somewhere  #记得是可执行文件所在的目录,路径中不要包含可执行文件。

 

      然后执行 :

source /etc/profile #是我们的修改生效    

    2默认情况下,系统搜索库文件的路径/lib, /usr/lib; 要增添额外搜寻路径(注意:有的程序不提供库文件,那就不需要此设置了)

      在/etc/ld.so.conf.d/中创建以.conf为后缀名的文件,而后把要增添的路径直接写至此文件中;然后执行如下命令使其生效

ldconfig

 

    3、如果程序提供了库文件,也会相应的提供头文件,一般在安装目录的include目录下,系统默认扫描头文件的路径是:/usr/include。我们可以在/usr/include下用链接连接到我们安装程序的头文件。

ln -s /usr/local/nginx/include  /usr/include/yourname

    4、可能程序还提供了帮助文档,一般是安装目录下的man目录,为了我们可以使用man命令查看我们程序的帮助文档,我们需要:在/etc/man.config中添加一条MANPATH,指向我们的文档目录

转载于:https://www.cnblogs.com/moying-wq/p/10662427.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/387076.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

selenium用法详解

selenium用法详解 selenium主要是用来做自动化测试,支持多种浏览器,爬虫中主要用来解决JavaScript渲染问题。 模拟浏览器进行网页加载,当requests,urllib无法正常获取网页内容的时候一、声明浏览器对象 注意点一,Python文件名或者…

haoop笔记

8:00 2019/3/141:什么是hadoop? hadoop是解决大数据问题的一整套技术方案2:hadoop的组成? 核心框架 分布式文件系统 分布式计算框架 分布式资源分配框架 hadoop对象存储 机器计算3:hadoop 云计算 大数据 微服务 人工智能关系 参见word学习…

Sleuth则是用来共方便的集成Zipkin。

简述 使用 spring cloud 用到最多的是各种rest服务调用,Twitter的Zipkin 是一种实现分布式跟踪解决方案,Sleuth则是用来共方便的集成Zipkin。调用跟踪系统的业务场景 随着服务的拆分,系统的模块变得越来越多,不同的模块可能由不同…

Spring Cloud 中 分布式事务解决方案 -- 阿里GTS的使用

1&#xff1a;依赖引入<!--gts相关--><!--数据库连接--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-jdbc</artifactId></dependency><dependency><groupId>mysql&…

《HTTP 权威指南》笔记:第十五章 实体与编码

&#xfffc; 如果把 「HTTP 报文」想象为因特网货运系统的「箱子」,那么「HTTP 实体」就是报文中的实际的「货物」. 其中,实体又包含了「实体首部」 和 「实体主体」,实体首部用于描述各种参数,实体主体就是原始货物. 常见的实体首部 实体的大小: Content-Length 定义: 报文的…

Spring Cloud Sleuth进阶实战

为什么需要Spring Cloud Sleuth 微服务架构是一个分布式架构&#xff0c;它按业务划分服务单元&#xff0c;一个分布式系统往往有很多个服务单元。由于服务单元数量众多&#xff0c;业务的复杂性&#xff0c;如果出现了错误和异常&#xff0c;很难去定位。主要体现在&#xff…

Element表格嵌入复选框以及单选框

1&#xff0c;element 表格嵌入CheckBox 效果图如下&#xff1a; 2&#xff0c;element结合checkBox实现单选效果如下&#xff1a; html代码&#xff1a; <template><div><p>shopInfo</p><el-tableref"multipleTable":data"tableDat…

温故之 “插入排序”

概念&#xff1a;将一个数据插入已经排好序的有序数组中&#xff0c;从而得到一个新的多一个数据的有序数组。 概念理解~~ 将要排序的是一个乱的数组int[] arrays {3, 2, 1, 3, 3}; 在未知道数组元素的情况下&#xff0c;我们只能把数组的第一个元素作为已经排好序的有序数据&…

实验二3

#include "stdafx.h" #include "stdio.h" int main(int argc, char* argv[]) {int a,b,c; scanf("%d %d %d",&a,&b,&c);if(ab&&bc) printf("等边三角形");else if((ab&&b!c)||(ac&&c!b)||(bc&a…

webpack来打包你的vue项目,如发现你的vendor.js过大

1.如果你使用了webpack来打包你的vue项目&#xff0c;如发现你的vendor.js过大则可以参考本文的解决方案. 2.造成过大的原因是因为在main.js导入第三库太多时,webpack合并js时生成了vendor.js(我们习惯把第三方库放在vendor里面)造成的.如下图在main.js引用element-ui等第三方…

TF01 简介

总览 如何从实体中提取特征&#xff0c;对于很多传统机器学习算法的性能有巨大影响。 一旦解决了数据表达和特征提取&#xff0c;很多人工智能任务也就解决了90%。 对许多机器学习算法来说&#xff0c;特征提取不是一件简单的事情。 深度学习解决的核心问题之一就是自动的将简…

K8s基本概念入门

序言 没等到风来&#xff0c;绵绵小雨&#xff0c;所以写个随笔&#xff0c;聊聊k8s的基本概念。 k8s是一个编排容器的工具&#xff0c;其实也是管理应用的全生命周期的一个工具&#xff0c;从创建应用&#xff0c;应用的部署&#xff0c;应用提供服务&#xff0c;扩容缩容应用…

idea出现找不到实体类

今天经理遇到一个很奇怪的问题&#xff1a; 在使用idea时&#xff0c;就是包真实存在&#xff0c;但是包中的实体类却无法智能提示&#xff0c;也无法导入成功&#xff1b; 我推荐的解决办法是重新导入&#xff0c;但是没有用&#xff0c;经理在网上找了很多解决方式&#xff0…

TF02 入门

计算模型——图 数据模型——张量 运行模型——会话 TensorFlow计算模型——计算图 计算图是TF中最基本的一个概念&#xff0c;TF中的所有计算都会被转化为计算图上的结点。 TF是一个通过计算图的形式来表述计算的编程系统。TF中的每一个计算都是计算图上的一个节点&#x…

ElasticSearch、Logstash和Kiabana三个开源工具。

一 方案背景 通常&#xff0c;日志被分散的储存不同的设备上。如果你管理数十上百台服务器&#xff0c;你还在使用依次登录每台机器的传统方法查阅日志。这样是不是感觉很繁琐和效率低下。开源实时日志分析ELK平台能够完美的解决日志收集和日志检索、分析的问题&#xff0c;ELK…

「一本通 6.4 例 4」曹冲养猪(CRT)

复习一下 扩展中国剩余定理 首先考虑两个同余方程\[ x \equiv a_1\; mod\; m_1\\ x \equiv a_2\; mod\; m_2 \]化成另一个形式\[ x n_1 * m_1 a_1\\ x n_2 * m_2 a_2 \] 联立可得\[ n_1 * m_1 a_1 n_2 * m_2 a_2\\ n_1 * m_1 - n_2 * m_2 a_2 - a_1 \]有解的前提是\[ \…

06 MapReduce工作机制

MapReduce作业的执行流程 1、提交作業 在提交JobConf對象之後&#xff0c;用戶程序調用JobClient的runJob方法。 runJob方法會先行調用JobSubmissionProtocol接口所定義的submitJob方法&#xff0c;並將作業提交給JobTracker。 緊接着&#xff0c;runJob不斷循環&#xff0…