码迷,mamicode.com
首页 > 系统相关 > 详细

Linux程序包编译安装

时间:2015-09-02 02:08:19      阅读:261      评论:0      收藏:0      [点我收藏+]

标签:计算机程序   计算机语言   程序语言   程序设计   文本文件   

一、源代码简介(文件中的代码之间,很可能存在跨文件依赖关系)

                源代码(也称源程序)是指未编译的按照一定的程序设计语言规范书写的文本文件,是一系列人类可读的计算机语言指令。 在现代程序语言中,源代码可以是以书籍或者磁带的形式出现,但最为常用的格式是文本文件,这种典型格式的目的是为了编译出计算机程序。计算机源代码的最终目的是将人类可读的文本翻译成为计算机可以执行的二进制指令,这种过程叫做编译,通过编译器完成。

二、源代码的编译过程

        由于程序源代码到可被计算机识别并运行的指令是需要多步骤处理的:程序源代码 --> 预处理 --> 编译 --> 汇编 --> 链接。

        这里以C,C++为例做为说明。程序员写完C,C++源代码后需要把源代码进行预处理,即通过预处理器把源代码分割或处理成为特定的符号用来支持宏调用。预处理后进一步通过编译器(gcc)编译为目标代码(object code),它由接近于机器语言的代码组成。目标代码通过编译器编译后才能生成可供CPU识别的机器代码、机器指令。由于C,C++在编写中大量调用了库文件,所以在编译后需要把源代码中使用到的库做好链接。形成能够依赖于共享库独立运行代码。

        LINUX包的二进制应用程序一般包含(二进制文件、库文件、配置文件、帮助文件)。且在LINUX中二进制应用程序的组成部分为:

二进制程序:/bin, /sbin, /usr/bin, /usr/sbin, /usr/local/bin, /usr/local/sbin

库文件:/lib, /lib64, /usr/lib, /usr/lib64, /usr/local/lib, /usr/local/lib64

配置文件:/etc, /etc/DIRECTORY, /usr/local/etc

帮助文件:/usr/share/man, /usr/share/doc, /usr/local/share/man, /usr/local/share/doc

、程序包编译安装的需求

                在某些情况下,比如某个程序已经更新了新版本,但是因为官方或其他组织还没有编译成RPM包,而我们此时需要用到此新版本程序的功能,或者当官方提供的RPM包中因为集成了太多我们不需要的功能或缺少某些功能时。此时我们就需要考虑自己通过源代码编译安装成可供LINUX识别的二进制安装包。

                但是要把源代码变成可执行的二进制文件需要以下过程:程序源代码 --> 预处理 --> 编译 --> 汇编 --> 链接。想到这里我们又不由自主的奔溃了。而且因为程序在开发中一般是使用模块开发的,所以文件中的代码之间,很可能存在跨文件依赖关系。所以为了方便用户能够自主编译源代码。所以有了项目管理器(make)。

、编译安装三步骤

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


C代码编译安装三步骤:

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

        开发工具:make, gcc等

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

            glibc:标准库


Centos 5,6,7通过“包组”提供开发组件

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


①、./configure:

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

    (2) 检查依赖到的外部环境,如果此时依赖的外部环境没有配置,会导致报错。第一步报错会导致make不能执行

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

    --help: 获取其支持使用的选项
        选项分类:
        安装路径设定:
            --prefix=/PATH/TO/SOMEWHERE: 指定默认安装位置;默认为/usr/local/
            --sysconfdir=/PATH/TO/SOMEWHERE:配置文件安装位置;

    System types:

        Optional Features: 可选特性
            -disable-FEATURE
            --enable-FEATURE[=ARG]

        Optional Packages: 可选包
            --with-PACKAGE[=ARG]
            --without-PACKAGE

②、make:

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

③、make install

    把二进制文件、库文件、配置文件、帮助文件复制到对应的目录中

注意事项:

    configure和Makefile.in是程序员通过两个工具生成并提供给我们使用的

        开发工具:

            autoconf: 生成configure脚本

            automake:生成Makefile.in

        建议:安装前查看INSTALL,README


开源程序源代码的获取:

    官方自建站点:

        apache.org (ASF)

        mariadb.org

        ...

    代码托管:

        SourceForge

        Github.com

        code.google.com


、编译安装httpd(httpd-2.2.29)

①、通过官方网站下载http-2.2.29.tar.gz此源代码包,并查看INSTALL文件

[root@localhost httpd-2.2.29]# tar -zxvf httpd-2.2.29.tar.gz
[root@localhost ~]# cd httpd-2.2.29
[root@localhost httpd-2.2.29]# ls
ABOUT_APACHE   configure.in    LAYOUT         os
acinclude.m4   docs            libhttpd.dep   README
Apache.dsw     emacs-style     libhttpd.dsp   README.platforms
build          httpd.dep       libhttpd.mak   README-win32.txt
BuildAll.dsp   httpd.dsp       LICENSE        ROADMAP
BuildBin.dsp   httpd.mak       Makefile.in    server
buildconf      httpd.spec      Makefile.win   srclib
CHANGES        include         modules        support
config.layout  INSTALL         NOTICE         test
configure      InstallBin.dsp  NWGNUmakefile  VERSIONING
[root@localhost httpd-2.2.29]# more INSTALL 
  APACHE INSTALLATION OVERVIEW

  Quick Start - Unix
  ------------------

  For complete installation documentation, see [ht]docs/manual/install.html or
  http://httpd.apache.org/docs/2.2/install.html

     $ ./configure --prefix=PREFIX
     $ make
     $ make install
     $ PREFIX/bin/apachectl start
     ........
 #这里建议编译安装的时候首先读INSTALL或README文件。

②、因为每个源码提供的选项不尽相同,所以建议通过./configure --help查看需要的选项

[root@localhost httpd-2.2.29]# ./configure --help

③、通过./configure 跟特定需要的选择开始构建生产makefile文件



、编译安装后的配置

(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


本文出自 “shutdow -h now” 博客,请务必保留此出处http://kgdbfmwfn.blog.51cto.com/5062471/1690639

Linux程序包编译安装

标签:计算机程序   计算机语言   程序语言   程序设计   文本文件   

原文地址:http://kgdbfmwfn.blog.51cto.com/5062471/1690639

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!