Linux 编译安装源码包

程序包编译安装
    *.src.rpm→安装后,使用rpmbuild命令制作成二进制格式的rpm  包,而后再安装;
    源代码组织格式:
        多文件:文件中的代码段之间,很有可能存在跨文件依赖关系;
    各个语言的项目管理器:
        C,C++:make;
        Java:maven;
    make执行过程:
        make针对每一个源代码都有一个专用的配置文件,它会根据配置文件作出决定,比如在预处理阶段,决定调用那个预处理器如何预处理;在编译阶段决定调用哪个编译器如何执行编译,先编译哪个文件,后编译哪个文件;最后编译生成的文件要放到那些目录等;
            这个配置文件就是makefile,因为不同用户的需求不同,所以决定了makefile不可能是事先存在的,需要根据需求而临时生成的,那么它是怎么生成的那:由Makefile.in生成;makefile.in就类似一个模板,用户选择好不同的参数之后根据模板而生成makefile,比如事先设置各种配置文件的安装路径等;那么问题来了:Makefile.in这个模板是怎么生成的那,它是由configure这个脚本生成的;configure脚本允许用户传递给它一些选项用来指明程序包的编译参数、启用特性、安装路径等;
                大体过程:configure通过用户指定的选项然后结合Makefile.in模板来生成makefile文件;
    编译安装三步骤:
        ./configure
            通过选项传递参数,指定启用特性,安装路径;执行时会参考用户指定的参数以及Makefile.in模板生成makefile文件;
            检各个启用的功能所依赖的外部环境;
        make
            根据makefile文件,构建应用程序;
        make install:其实这一步就是把编译(构建)好的程序的文件放到相对应的目录下,使用cp命令也可以完成;
    开发工具:
        一般情况下源码包都会自带configure,但是也有的源码包不带,所以就需要我们自己生成它,如果手动的一步一步的编写这个就脚本无疑是很费时间的,所以就有了可以自动生成它的开发工具;
        autoconf:生成configure脚本;
        automake:生成Makefile.in文件;
            因不同的需求而启动的功能有所不同,所以导致configure也是不同的,所以autoconf也是需要根据配置文件来生成configure脚本的;Makefile.in同理;
    建议:安装前查看INSTALL、README说明文本;
    开源代码获取途径:
        官方自建站点
            apache.org(ASF)
            mariadb.org
            …
        代码托管
            SourceForge
            Github.com
            code.google.com
    编译C源代码
        前提:提供开发工具和开发环境;
        开发工具:gcc,make;
        开发环境:开发库,头文件;
        通过“包组”提供开发工具;
            Centos 6 常用开发库:“Development Tools”,“Server Platform Development”;
            Centos7  常用开发库:“Development Tools”;
        
        第一步  ./configure
            选项:指定安装位置,指定启用的特性;
            --help:查看帮助;
                --prefix=/PATH/TO/SOMEWHERE:指定默认安装目录;默认安装到/usr/local/
                --sysconfdir=/PATH/TO/SOMEWHERE:指明配置文件安装的路径;
                System Types:指明目标系统平台,可以实现交叉编译;
                    不同软件的源码包实现功能不同,所以选项也各有不同,根据情况随机应变;
                Optional Features:可选特性;
                    可以启用或关闭特性,选项略;
                Optional Packages:定义依赖到的程序包,跟依赖关系相关;
        第二步  make
        第三步  make install
    安装后的配置:
        导出二进制程序目录至环境变量PATH中
            编辑文件:/etc/prefile.d/NAME.sh
                添加export PATH=/PATH/TO/BIN:$PATH
        导出库文件路径
            编辑/etc/ld.so.conf.d/NAME.conf
                添加新的库文件所在目录至此文件中;
            再让系统重新生成缓存:
                ldconfig -[v]
        导出头文件
            基于符号链接的方式实现;
            ln -s
        导出man手册
            编辑/etc/man_db.conf文件;
            
            
注:根据马哥视频做的学习笔记,如有错误,欢迎指正:侵删

猜你喜欢

转载自blog.csdn.net/qq_32501535/article/details/82926973