编译安装

程序包编译安装java


为何要对程序包进行编译安装?nginx


 有些特性是编译选定的,若是编译未选定此特性,将没法使用。c++

  rpm包的版本会落后于源码包,甚至落后不少。apache


一般咱们的安装分两钟:vim


第一是从网上下载testapp-VERSION-release.src.rpm源码包,编译后进行安装---咱们今天探讨的问题
缓存

第二种是使用rpmbuild命令制做成二进制格式的rpm包,然后再安装;
bash





  首先了解一个源码到执行经历了哪些路途网络

       代码执行的过程:源代码 --> 预处理 --> 编译(gcc) --> 汇编 --> 连接 --> 执行app

       源代码组织格式多文件:文件中的代码之间,极可能存在跨文件依赖关系;maven




    源码安装的原理是什么呢?


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


源码安装过程的简单介绍:源码程序包里有一个configuer的命令,它经过Makefile.in模版生成一个makefile文件。
make经过makefile文件的设定组织源码生成一个二进制程序包,而后makeinstall安装到指定路径就能够了。 注:make 是c、c++源码的项目管理工具
 小拓展:java: maven  注:maven是jave源码的项目管理工具



C代码编译安装三步骤:

    建议:安装前查看INSTALL,README

    第一步:./configure:

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

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


第一步使用方法详解:

    

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

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

    选项分类:

        安装路径设定:

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

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


             可选特性:

         --disable-FEATURE

         --enable-FEATURE[=ARG]


          可选包:

        --with-PACKAGE[=ARG]

        --without-PACKAGE



    第二步:make:

    做用:根据makefile文件,构建应用程序;   注:直接make就行


    第三步:make install                     注:直接make install就行

      做用:就是为了把编译好的文件放在指定的路径下 【配置文件、库文件 帮助文件】)



你们确定如今就像去编译了吧,咱们还须要一点准备工做

   

  编译C源代码:前提:提供开发工具及开发环境

    开发工具:make(项目构成工具), gcc (c源码的编译器)

    开发环境:开发库(glibc:标准库),头文件


 以上须要的环境,咱们只须要安装两个包组,就能够愉快的编译了   

       CentOS 6和7: "Development Tools", "Server Platform Development",


   

  安装之后,小伙伴们别急。想使用劳动成果还须要作一下工做呢

  

    安装后的配置:

    (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




举例完整编译nginx程序


前提:准备开发环境(编译环境)

红帽5 安装“Development Tools”和“Developments Libraries”

拿到源程序后先tar解压缩,而后cd到目录里面去

#tar xf tengine-1.4.2.tar.gz

#cd tegnine-1.4.2

./configure

   --prefix=/path/to/somewhere  注:软件安装的位置

   --sysconfdir=/path/to/conffile_path 注:指定配置文件的路径

例如:./configure --prefix=/usr/local/tengine --conf-path=/etc/tengine/tengine.conf

#make  注:编译

#make install 注:安装

# /usr/local/tengine/sbin/nginx 注:启动nginx程序

此时/usr/local/tengine/sbin不在环境变量里,全部必须全路径才能够启用。

 #vim /etc/profile

PATH=$PATH:/user/local/tengine/sbin 注:在export以前一行添加,而后让系统重读这个脚本

export PATH USER LOGNAME MAIL HOSTNAME HISTSIZE INPUTRC


#source /etc/profile 让系统重读此文件,须要重启机器才能够有效。或者不重读,从新登录一下机器也能够生效

注意:

咱们安装软件包,若是安装在非默认路径下要修改path环境变量

一、修改PATH环境变量,以可以识别此程序的二进制文件路径

  方法一:修改/etc/profile文件

  方法二:在/etc/profile.d/目录创建一个以.sh为名称后缀的文件,在里面定义export PATH=$PATH:/path/to/somewhere

二、默认状况下,系统搜索库文件的路径/lib, /usr/lib,要增添额外搜寻路径

   在/etc/ld.so.conf.d/ 中建立 .conf为后缀名的文件,然后把要增添的路径直接写至此文件中(下次重启能找到库了)

  #ldconfig (执行此命令能够从新搜寻库文件)

           -v:显示从新搜寻库的过程

三、头文件(二次开发的软件提供输出库功能的,它都有头文件),任何一个二进制程序要想调用别人的库,要提早声明并包含到当前系统中


来。就须要include包含库文件所提供的功能的

    头文件里有函数、参数、以及参数类型等相关属性

 头文件须要输出给系统,默认:/usr/include

  自定义:增添头文件搜寻路径,使用连接

把/usr/local/tengine/include/ 连接到/usr/include/下有两种方法

第一:ln -s /usr/local/tengine/include/*  /usr/include/  注:不应变文件名,把include下全部文件连接到/include这个目录下

第二:ln -s /usr/local/tengine/include    /usr/include/tengine  注:把include目录连接到include/下的一个目录,并命名tengine

四、手动编译的man文件不在标准路径的时候。

  man文件路径:安装在--prefix指定的目录下的man目录。 标准:/usr/share/man

 方法一:man -M /PATH/TO/MAN_DIR COMMAND

 方法二:在/etc/man.config中添加一条“MANPATH //usr/local/tengine/man”


netstat:显示网络情况的命令

   -r:显示路由表

   -n:以数字方式显示

   -t:显示tcp的链接

   -u:显示udp链接

   -l:显示监听状态的链接

   -p:显示监听指定的套接字的进程的进程号及进程名



&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&


了解:开发工具:autoconf: 生成configure脚本   automake:生成Makefile.in

      看了这个你大概知道源码包里configure和 Makefile.in怎么来的了。





开源程序源代码的获取:

    官方自建站点:

    apache.org (ASF)

    mariadb.org

    ...

    代码托管:

    SourceForge

    Github.com

    code.google.com

相关文章
相关标签/搜索