这是binutils的spec,看看它的编译方案是否与lfs的不一样?补丁当然不一样
Summary: A GNU collection of binary utilities.
Name: binutils
Version: 2.15.92.0.2
Release: 10.EL4
Copyright: GPL
Group: Development/Tools
URL: http://sources.redhat.com/binutils
Source: ftp://ftp.kernel.org/pub/linux/devel/binutils/binutils-%{version}.tar.bz2
[QUOTE]Patch1: binutils-2.15.92.0.2-ltconfig-multilib.patch
Patch2: binutils-2.15.92.0.2-ppc64-pie.patch
Patch3: binutils-2.15.92.0.2-place-orphan.patch
Patch4: binutils-2.15.92.0.2-ia64-lib64.patch
Patch5: binutils-2.15.92.0.2-relro-fix.patch
Patch6: binutils-2.15.92.0.2-ldsoconf.patch
Patch7: binutils-2.15.92.0.2-elfvsb-test.patch
Patch8: binutils-2.15.92.0.2-prelink-strip.patch
Patch9: binutils-2.15.92.0.2-ppc-tlbie.patch
Patch10: binutils-2.15.92.0.2-strings.patch
Patch11: binutils-2.15.92.0.2-comdat-linkonce-mix.patch
Patch12: binutils-2.15.92.0.2-justsymbols.patch
Patch13: binutils-2.15.92.0.2-ar-xo.patch
Patch14: binutils-2.15.92.0.2-eh-frame-lsda.patch
Patch15: binutils-2.15.92.0.2-stt_section-abs.patch
Patch16: binutils-2.15.92.0.2-ppc64-emit-relocs.patch
Patch17: binutils-2.15.92.0.2-relro-gap.patch
Buildroot: %{_tmppath}/binutils-root
BuildRequires: texinfo >= 4.0, dejagnu, gettext, flex, bison
Prereq: /sbin/install-info
%ifarch ia64
Obsoletes: gnupro
%endif
%define _gnu %{nil}
%description
Binutils is a collection of binary utilities, including ar (for
creating, modifying and extracting from archives), as (a family of GNU
assemblers), gprof (for displaying call graph profile data), ld (the
GNU linker), nm (for listing symbols from object files), objcopy (for
copying and translating object files), objdump (for displaying
information from object files), ranlib (for generating an index for
the contents of an archive), size (for listing the section sizes of an
object or archive file), strings (for listing printable strings from
files), strip (for discarding symbols), and addr2line (for converting
addresses to file and line).
%prep
%setup -q
%patch1 -p0 -b .ltconfig-multilib~
%patch2 -p0 -b .ppc64-pie~
%patch3 -p0 -b .place-orphan~
%ifarch ia64
%if "%{_lib}" == "lib64"
%patch4 -p0 -b .ia64-lib64~
%endif
%endif
%patch5 -p0 -b .relro-fix~
%patch6 -p0 -b .ldsoconf~
%patch7 -p0 -b .elfvsb-test~
%patch8 -p0 -b .prelink-strip~
%patch9 -p0 -b .ppc-tlbie~
%patch10 -p0 -b .strings~
%patch11 -p0 -b .comdat-linkonce-mix~
%patch12 -p0 -b .justsymbols~
%patch13 -p0 -b .ar-xo~
%patch14 -p0 -b .eh-frame-lsda~
%patch15 -p0 -b .stt_section-abs~
%patch16 -p0 -b .ppc64-emit-relocs~
%patch17 -p0 -b .relro-gap~
# libtool sucks
perl -pi -e 'm/LIBADD/ && s/(\.\.\/bfd\/libbfd.la)/-L\.\.\/bfd\/\.libs \1/' opcodes/Makefile.{am,in}
# LTP sucks
perl -pi -e 's/i\[3-7\]86/i[34567]86/g' */conf*
touch */configure [color="Red"]这是patch过程吧?
%build
mkdir build-%{_target_platform}
cd build-%{_target_platform}
CARGS=
%ifarch sparc ppc s390
CARGS=--enable-64-bit-bfd
%endif
%ifarch ia64
CARGS=--enable-targets=i386-linux
%endif
CFLAGS="${CFLAGS:-%optflags}" ../configure \
%{_target_platform} --prefix=%{_prefix} --exec-prefix=%{_exec_prefix} \
--bindir=%{_bindir} --sbindir=%{_sbindir} --sysconfdir=%{_sysconfdir} \
--datadir=%{_datadir} --includedir=%{_includedir} --libdir=%{_libdir} \
--libexecdir=%{_libexecdir} --localstatedir=%{_localstatedir} \
--sharedstatedir=%{_sharedstatedir} --mandir=%{_mandir} \
--infodir=%{_infodir} --enable-shared $CARGS
make %{_smp_mflags} tooldir=%{_prefix} all
make %{_smp_mflags} tooldir=%{_prefix} info
make -k check < /dev/null > check.log 2>&1 || :
echo ====================TESTING=========================
cat check.log
echo ====================TESTING END=====================
cd .. [color="red"]这是configure,make过程?
%install
rm -rf %{buildroot}
mkdir -p %{buildroot}%{_prefix}
cd build-%{_target_platform}
%makeinstall
make prefix=%{buildroot}%{_prefix} infodir=%{buildroot}%{_infodir} install-info
gzip -q9f %{buildroot}%{_infodir}/*.info*
# Rebuild libiberty.a with -fPIC
make -C libiberty clean
make CFLAGS="-g -fPIC $RPM_OPT_FLAGS" -C libiberty
install -m 644 libiberty/libiberty.a %{buildroot}%{_prefix}/%{_lib}
install -m 644 ../include/libiberty.h %{buildroot}%{_prefix}/include
# Remove Windows/Novell only man pages
rm -f %{buildroot}%{_mandir}/man1/{dlltool,nlmconv,windres}*
chmod +x %{buildroot}%{_prefix}/%{_lib}/lib*.so*
# Prevent programs to link against libbfd and libopcodes dynamically,
# they are changing far too often
rm -f %{buildroot}%{_prefix}/%{_lib}/lib{bfd,opcodes}.so
# Remove libtool files, which reference the .so libs
rm -f %{buildroot}%{_prefix}/%{_lib}/lib{bfd,opcodes}.la
# This one comes from gcc
rm -f %{buildroot}%{_prefix}/bin/c++filt
rm -f %{buildroot}%{_infodir}/dir
rm -rf %{buildroot}%{_prefix}/%{_target_platform}
cd ..
%find_lang binutils
%find_lang opcodes
%find_lang bfd
%find_lang gas
%find_lang ld
%find_lang gprof
cat opcodes.lang >> binutils.lang
cat bfd.lang >> binutils.lang
cat gas.lang >> binutils.lang
cat ld.lang >> binutils.lang
cat gprof.lang >> binutils.lang
%clean
rm -rf %{buildroot}
%post
/sbin/ldconfig
/sbin/install-info --info-dir=%{_infodir} %{_infodir}/as.info.gz
/sbin/install-info --info-dir=%{_infodir} %{_infodir}/bfd.info.gz
/sbin/install-info --info-dir=%{_infodir} %{_infodir}/binutils.info.gz
/sbin/install-info --info-dir=%{_infodir} %{_infodir}/gprof.info.gz
/sbin/install-info --info-dir=%{_infodir} %{_infodir}/ld.info.gz
/sbin/install-info --info-dir=%{_infodir} %{_infodir}/standards.info.gz
%preun
if [ $1 = 0 ] ;then
/sbin/install-info --delete --info-dir=%{_infodir} %{_infodir}/as.info.gz
/sbin/install-info --delete --info-dir=%{_infodir} %{_infodir}/bfd.info.gz
/sbin/install-info --delete --info-dir=%{_infodir} %{_infodir}/binutils.info.gz
/sbin/install-info --delete --info-dir=%{_infodir} %{_infodir}/gprof.info.gz
/sbin/install-info --delete --info-dir=%{_infodir} %{_infodir}/ld.info.gz
/sbin/install-info --delete --info-dir=%{_infodir} %{_infodir}/standards.info.gz
fi
%postun -p /sbin/ldconfig
%files -f binutils.lang
%defattr(-,root,root)
%doc README
%{_prefix}/bin/*
%{_mandir}/man1/*
%{_prefix}/include/*
%{_prefix}/%{_lib}/lib*
%{_infodir}/*info*
[color="Red"]lfs里没有这些步骤,应该是redhat的安装吧?不用make install,而是为打包rpm准备的吧?好像有增加删除的举止? [/QUOTE]
想借鉴一下主要发行版的编译方案与lfs的不同,请各位分析一下 |