制作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
posted @ 2020-06-05 15:25  AlexGuoMe  阅读(1331)  评论(0编辑  收藏  举报