zoukankan      html  css  js  c++  java
  • 制作GCC的RPM包

    制作RPM包(for gcc)

    注意事项:

    制作RPM包最好不要使用ROOT用户,以防止制作过程中不慎执行有害命令

    需要安装的依赖包:

    $ yum install gcc rpm-build rpm-devel rpmlint make python bash coreutils diffutils patch rpmdevtools
    

    STEP1:

    执行如下命令生成工作区目录:

    $ rpmdev-setuptree
    

    生成的工作区目录结构如下:

    Directory Usage
    BUILD rpmbuild命令构建软件的目录
    RPMS 用于存储生成的rpm包
    SOURCES 所有要用到的源文件(.src .conf)都放在这里,并在spec文件中用source引用
    SPEC 用于存放.spec文件,spec文件是构建rpm包的主要脚本文件
    SRPMS 用于存放.src.rpm文件,此文件无法直接使用,执行rpm -ivh会将源文件放到工作区目录下,仍然需要执行.spec文件进行编译

    STEP2:

    将要使用的源码放到SOURCES目录当中:

    $ cd /root/rpmbuild/SOURCES
    $ wget http://mirrors.ustc.edu.cn/gnu/gcc/gcc-4.8.5/gcc-4.8.5.tar.gz
    

    STEP3:

    创建gcc.spec文件,编写rpm包构建过程:

    $ cd /root/rpmbuild/SPECS
    $ vim gcc.spec
    
    #gcc.spec
    Summary: Install gcc
    Name: gcc
    Version: 4.8.5
    Release: 1%{?dist}
    License: GPL
    Group: Development/Languages
    Source0: gcc-4.8.5.tar.gz
    
    BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root
    
    BuildRequires: gcc-c++ tar libstdc++-devel
    
    %define __debug_install_post   
       %{_rpmconfigdir}/find-debuginfo.sh %{?_find_debuginfo_opts} "%{_builddir}/%{?buildsubdir}"
    %{nil}
    
    %description
    The gcc package contains the GNU Compiler Collection. This package installs
    all compilers in /usr/local/gcc48 directory.
    
    %prep
    %setup -q
    
    %build
    ./contrib/download_prerequisites
    mkdir gcc-build-4.8.5
    cd gcc-build-4.8.5
    #$PWD/../configure --prefix=/usr/local/gcc48 --enable-checking=release --enable-languages=c,c++ --disable-multilib
    $PWD/../configure --enable-checking=release --enable-languages=c,c++ --disable-multilib
    %{__make} %{?_smp_mflags}
    
    %install
    %{__rm} -rf %{buildroot}
    cd gcc-build-4.8.5
    %{__make} install DESTDIR=%{buildroot}
    
    %clean
    %{__rm} -rf %{buildroot}
    
    %pre
    
    %post
    echo "/usr/local/lib64" > /etc/ld.so.conf.d/usr_local_lib.conf
    /sbin/ldconfig &> /dev/null
    
    %postun
    
    %files
    %defattr(-, root, root, 0755)
    /usr/local/bin
    /usr/local/include
    /usr/local/lib
    /usr/local/lib64
    /usr/local/libexec
    /usr/local/share
    
    %changelog
    * Tue Apr 23 2019 lei.guo <lei.guo@funplus.com> - 4.8.5-2
    - change
    * Mon Apr 22 2019 lei.guo <lei.guo@funplus.com> - 4.8.5-1
    - test
    
    

    STEP4:

    编译生成二进制RPM包:

    QA_RPATHS=0x0020 rpmbuild -bb gcc.spec
    

    总结:

    • 这里简单的介绍了制作gcc的rpm包的大致方法,详细的rpm包制作过程见rpm包官方指导手册
    • SPEC文件中_tmppath这类变量是其自带的宏,想查看其真实的值可以使用如下命令:
    rpmbuild --showrc | grep _prefix
    
  • 相关阅读:
    排序
    自动生成存储过程的工具
    感悟javascript
    VS.net 2008 beta2 新功能
    北极光合伙人邓锋:要别人跳火坑,你自己先跳
    [转]驱动开发中应该注意的事项
    [转]CryptoAPI的应用(一)概述以及初始化模块
    [转]强制重启N种法
    Different ways of handling IRPs
    [转]分层驱动模型中IRP的传递与完成
  • 原文地址:https://www.cnblogs.com/alexguome/p/13049953.html
Copyright © 2011-2022 走看看