Linux之代码包编译

1,编译安装源代码包:

首先我们来了解一下源代码包

1, 源代码包就是源代码的可见的软件包,基于Linux和BSD系统的软件最常见。

2, 源代码包可以根据自己的需求编译出最适合自己的程序

3, 源代码包的压缩格式file.tar.gz  file.tar.bz2 file.tar.xz。

2,编译源代码包所依赖的环境:

根据源代码的开发环境不同,编译源代码所用的工具也就不同

例如根据C语言开发的源代码编译工具就为gcc,而如果把源代码分为多个源代码文件,那么又如何同一编译,怎样区分先后顺序?而项目管理工具的作用就是组织多个文件当做一个文件进行编译,使用的是GNU make 工具。Automake则自动为make提供配置文件,但是automake所提供的是MAKEFILE.in文件,而需要的配置文件为MAKEFILE ,所以autoconf工具根据编译环境功能配置脚本生成configure文件,configure文件的作用便是结合MAKEFILE.in生成MAKEFILE文件。然后由make调用。

3,编译源代码步骤:

1, 下载源代码包

2, 解压源代码包

   a) tar xf testapp-version.tar.{xz|bz2|gz}

   b) cd testapp-version 切入加压出来的文件目录

  

   c) ./configure 执行此文件,还需通过许多指定的编译特性

    1、获取帮助

    ./configure --help

    2、较通用的一些选项

    安装路径相关:

        --prefix=/path/to/somewhere: 指定安装路径

        --sysconfdir=/path/to/somewhere: 指定配置文件安装路径

    指定启用/禁用的特性

        --enable-FEATURE: 例如--enable-fpm

        --disable-FEATURE: 例如--disable-socket

    指定所依赖的功能、程序或文件

        --with-FUNCTION[=/path/to/somewhere]

        --without-FUNCTION

        缺少库文件,安装yum install pcre-devel

        执行成功!

d) make

    直接执行make结果如下,没有错误,就可以执行下一步安装了

e) make istall 安装完成

3, 安装后的配置

    大家可以看到,我们执行nginx程序是在/usr/local/nginx/sbin/下执行的程序,那么在     主目录下可以执行吗?我们来看一下

    提示没有此命令,那又是为什么呢?是因为我们没有在PATH环境的搜索路径中。

     1,我们要想让安装的二进制程序直接运行,则需要在PATH中添加环境变量。

    首先在/etc/profile.d/目录下创建appNAME.sh(你的文件名以.sh结尾)的问价

    在appNAME.sh中写下export PATH=$PATH:/path/to/somewhere(你的文件路径)

     2,导入手册页

        我们平时使用man命令查看一个命令的帮助信息,而nginx却不行。那是应为

        我们在/etc/man.config文件中有说明,所以我们也加一条进去即可

        man –M /path/to/somewhere KEYWORD

程序开发:如果其他应用程序依赖此程序的开发,或针对此程序做二次开发则需要

    1,导出库文件

    在开机的时候系统会通过/etc/ld.so.cache保存当前系统上所能找到的库文件和路劲,所     以指定让系统搜索定制的路径

    编辑:/etc/ld.so.conf.d/APPNAME.conf

    一行一个库文件路劲,写进来即可

    2,触发系统重新搜索所有的库文件并生成缓存

    ldconfig –v

    3,导出头文件

    自定义安装的一般都在自己安装目录下的/etc/local/nginx/include

    系统找头文件的路劲是:/usr/include

    所以,创建连接进行

    ln –sv /usr/local/nginx/include /usr/include/nginx

END

本文出自 “aolens·程超” 博客,请务必保留此出处http://aolens.blog.51cto.com/7021142/1440516

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。