zoukankan      html  css  js  c++  java
  • 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文件;
                
                
    注:根据马哥视频做的学习笔记,如有错误,欢迎指正:侵删

  • 相关阅读:
    IDAPython学习(一)
    自动提取文件系统---binwalk(一)
    Scapy Fuzz实现——S7协议从建连到“正常交流“(一)
    工控系统的指纹识别技术
    揭秘VxWorks——直击物联网安全罩门
    VxWorks Fuzzing 之道:VxWorks 工控实时操作系统漏洞挖掘调试与利用揭秘
    路由器文件系统与提取
    python 调试技巧
    拿下id_rsa
    elasticsearch 7.1 401 Unauthorized
  • 原文地址:https://www.cnblogs.com/guowei-Linux/p/9787331.html
Copyright © 2011-2022 走看看