binutils-2.18/bfd/Makefile分析

快乐虾

http://blog.csdn.net/lights_joy/

lights@hb165.com

   

 

本文适用于

binutils-2.18

configure –target=bfin-uclinux-gnu

Blackfin系列DSP

Cygwin gcc 3.4.4

   

 

欢迎转载,但请保留作者信息

 

 

1       bfd/Makefile

这个文件由主控Makefile调用configure脚本生成并执行make操作。要求生成的目标为all

1.1    all

Makefile中的第一个目标就是all

all: config.h

       $(MAKE) $(AM_MAKEFLAGS) all-recursive

all diststuff: info

因此它将首先生成info目标,再执行all-recursive这个目标。

info规则定义为:

info: info-recursive

对于这两个目标的生成都是由RECURSIVE_TARGETS来完成的。

RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive /

       html-recursive info-recursive install-data-recursive /

       install-exec-recursive install-info-recursive /

       install-recursive installcheck-recursive installdirs-recursive /

       pdf-recursive ps-recursive uninstall-info-recursive /

       uninstall-recursive

# This directory's subdirectories are mostly independent; you can cd

# into them and run `make' without going through this Makefile.

# To change the values of `make' variables: instead of editing Makefiles,

# (1) if the variable is set in `config.status', edit `config.status'

#     (which will cause the Makefiles to be regenerated when you run `make');

# (2) otherwise, pass the desired values on the `make' command line.

$(RECURSIVE_TARGETS):

       @failcom='exit 1'; /

       for f in x $$MAKEFLAGS; do /

         case $$f in /

           *=* | --[!k]*);; /

           *k*) failcom='fail=yes';; /

         esac; /

       done; /

       dot_seen=no; /

       target=`echo $@ | sed s/-recursive//`; /

       list='$(SUBDIRS)'; for subdir in $$list; do /

         echo "Making $$target in $$subdir"; /

         if test "$$subdir" = "."; then /

           dot_seen=yes; /

           local_target="$$target-am"; /

         else /

           local_target="$$target"; /

         fi; /

         (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) /

         || eval $$failcom; /

       done; /

       if test "$$dot_seen" = "no"; then /

         $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; /

       fi; test -z "$$fail"

在这段脚本中将分别进入各子目录并执行make xxx操作,xxx-recusive目标的前面一部分。

doc po两个子目录略过不做分析。当在bfd目录下执行all-recursive操作时,上述脚本转而执行all-am目标,因此下面转而分析all-am目标。这条规则定义为:

all-am: Makefile $(LIBRARIES) $(LTLIBRARIES) config.h

LIBRARIES = $(noinst_LIBRARIES)

noinst_LIBRARIES = libbfd.a

LTLIBRARIES = $(bfdlib_LTLIBRARIES)

bfdlib_LTLIBRARIES = libbfd.la

看看libbfd.a的规则:

stamp-lib: libbfd.la

       libtooldir=`$(LIBTOOL) --config | sed -n -e 's/^objdir=//p'`; /

       if [ -f $$libtooldir/libbfd.a ]; then /

         cp $$libtooldir/libbfd.a libbfd.tmp; /

         $(RANLIB) libbfd.tmp; /

         $(SHELL) $(srcdir)/../move-if-change libbfd.tmp libbfd.a; /

       else true; fi

       touch stamp-lib

 

libbfd.a: stamp-lib ; @true

因而实际工作都由libbfd.la完成,最后这段脚本将之复制为libbfd.a

 

1.2    libbfd.la

这条规则定义为:

libbfd.la: $(libbfd_la_OBJECTS) $(libbfd_la_DEPENDENCIES)

       $(LINK) -rpath $(bfdlibdir) $(libbfd_la_LDFLAGS) $(libbfd_la_OBJECTS) $(libbfd_la_LIBADD) $(LIBS)

在生成所有的.o文件后,这段脚本将它们链接为libbfd.la文件。

1.2.1   bfd.h

这个文件将先于.lo文件的生成,但是没查到为什么。奇怪得很,不知道是哪条依赖关系使用到了bfd.h。这个文件的生成由以下规则完成:

BFD_H = bfd.h

$(BFD_H): stmp-bfd-h ; @true

 

stmp-bfd-h: bfd-in3.h

       rm -f bfd-tmp.h

       cp bfd-in3.h bfd-tmp.h

       $(SHELL) $(srcdir)/../move-if-change bfd-tmp.h $(BFD_H)

       rm -f bfd-tmp.h

       touch stmp-bfd-h

只是一个简单的复制操作而已。

 

1.2.2   $(libbfd_la_OBJECTS)

这个变量定义为:

am__objects_1 = archive.lo archures.lo bfd.lo bfdio.lo bfdwin.lo /

       cache.lo coffgen.lo corefile.lo format.lo init.lo libbfd.lo /

       opncls.lo reloc.lo section.lo syms.lo targets.lo hash.lo /

       linker.lo srec.lo binary.lo tekhex.lo ihex.lo stabs.lo /

       stab-syms.lo merge.lo dwarf2.lo simple.lo

am_libbfd_la_OBJECTS = $(am__objects_1)

libbfd_la_OBJECTS = $(am_libbfd_la_OBJECTS)

 

1.2.2.1             archive.lo

这个目标的生成依赖于通用规则:

.c.lo:

       $(LTCOMPILE) -c -o $@ $<

同时有以下依赖关系:

archive.lo: archive.c $(INCDIR)/filenames.h $(INCDIR)/libiberty.h /

  $(INCDIR)/hashtab.h $(INCDIR)/aout/ar.h $(INCDIR)/aout/ranlib.h /

  $(INCDIR)/safe-ctype.h

这里LTCOMPILE的定义为:

LTCOMPILE = $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) /

       $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) /

       $(AM_CFLAGS) $(CFLAGS)

它调用libtool这个脚本,编译.c文件并生成同名的.o.lo文件。

 

1.2.2.2             archures.lo

这条规则定义为:

archures.lo: archures.c Makefile

       $(LIBTOOL) --mode=compile $(COMPILE) -c $(TDEFAULTS) $(srcdir)/archures.c

直接调用libtool这个脚本,编译.c文件并生成同名的.o.lo文件。

 

1.2.2.3             bfd.lo

这个目标的生成依赖于通用规则:

.c.lo:

       $(LTCOMPILE) -c -o $@ $<

同时有以下依赖关系:

bfd.lo: bfd.c $(INCDIR)/filenames.h bfdver.h $(INCDIR)/libiberty.h /

  $(INCDIR)/demangle.h $(INCDIR)/libiberty.h $(INCDIR)/safe-ctype.h /

  $(INCDIR)/bfdlink.h $(INCDIR)/hashtab.h $(INCDIR)/coff/internal.h /

  $(INCDIR)/coff/sym.h libcoff.h libecoff.h $(INCDIR)/coff/ecoff.h /

  elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h /

  $(INCDIR)/elf/external.h

直接调用libtool这个脚本,编译.c文件并生成同名的.o.lo文件。

 

1.2.2.4             bfdio.lo

这个目标的生成依赖于通用规则:

.c.lo:

       $(LTCOMPILE) -c -o $@ $<

同时有以下依赖关系:

bfdio.lo: bfdio.c $(INCDIR)/filenames.h $(INCDIR)/hashtab.h

直接调用libtool这个脚本,编译.c文件并生成同名的.o.lo文件。

 

1.2.2.5             bfdwin.lo

这个目标的生成依赖于通用规则:

.c.lo:

       $(LTCOMPILE) -c -o $@ $<

同时有以下依赖关系:

bfdwin.lo: bfdwin.c $(INCDIR)/filenames.h $(INCDIR)/hashtab.h

直接调用libtool这个脚本,编译.c文件并生成同名的.o.lo文件。

 

1.2.2.6             cache.lo

这个目标的生成依赖于通用规则:

.c.lo:

       $(LTCOMPILE) -c -o $@ $<

同时有以下依赖关系:

cache.lo: cache.c $(INCDIR)/filenames.h $(INCDIR)/hashtab.h /

  $(INCDIR)/libiberty.h

直接调用libtool这个脚本,编译.c文件并生成同名的.o.lo文件。

 

1.2.2.7             coffgen.lo

这个目标的生成依赖于通用规则:

.c.lo:

       $(LTCOMPILE) -c -o $@ $<

同时有以下依赖关系:

coffgen.lo: coffgen.c $(INCDIR)/filenames.h $(INCDIR)/hashtab.h /

  $(INCDIR)/coff/internal.h libcoff.h $(INCDIR)/bfdlink.h

直接调用libtool这个脚本,编译.c文件并生成同名的.o.lo文件。

 

1.2.2.8             corefile.lo

这个目标的生成依赖于通用规则:

.c.lo:

       $(LTCOMPILE) -c -o $@ $<

同时有以下依赖关系:

corefile.lo: corefile.c $(INCDIR)/filenames.h $(INCDIR)/hashtab.h

直接调用libtool这个脚本,编译.c文件并生成同名的.o.lo文件。

 

1.2.2.9             format.lo

这个目标的生成依赖于通用规则:

.c.lo:

       $(LTCOMPILE) -c -o $@ $<

同时有以下依赖关系:

format.lo: format.c $(INCDIR)/filenames.h $(INCDIR)/hashtab.h

直接调用libtool这个脚本,编译.c文件并生成同名的.o.lo文件。

 

1.2.2.10       init.lo

这个目标的生成依赖于通用规则:

.c.lo:

       $(LTCOMPILE) -c -o $@ $<

同时有以下依赖关系:

init.lo: init.c $(INCDIR)/filenames.h $(INCDIR)/hashtab.h

直接调用libtool这个脚本,编译.c文件并生成同名的.o.lo文件。

 

1.2.2.11       libbfd.lo

这个目标的生成依赖于通用规则:

.c.lo:

       $(LTCOMPILE) -c -o $@ $<

同时有以下依赖关系:

libbfd.lo: libbfd.c $(INCDIR)/filenames.h $(INCDIR)/hashtab.h

直接调用libtool这个脚本,编译.c文件并生成同名的.o.lo文件。

 

1.2.2.12       opncls.lo

这个目标的生成依赖于通用规则:

.c.lo:

       $(LTCOMPILE) -c -o $@ $<

同时有以下依赖关系:

opncls.lo: opncls.c $(INCDIR)/filenames.h $(INCDIR)/objalloc.h /

  $(INCDIR)/hashtab.h $(INCDIR)/libiberty.h

直接调用libtool这个脚本,编译.c文件并生成同名的.o.lo文件。

 

1.2.2.13       reloc.lo

这个目标的生成依赖于通用规则:

.c.lo:

       $(LTCOMPILE) -c -o $@ $<

同时有以下依赖关系:

reloc.lo: reloc.c $(INCDIR)/filenames.h $(INCDIR)/bfdlink.h /

  $(INCDIR)/hashtab.h

直接调用libtool这个脚本,编译.c文件并生成同名的.o.lo文件。

 

1.2.2.14       section.lo

这个目标的生成依赖于通用规则:

.c.lo:

       $(LTCOMPILE) -c -o $@ $<

同时有以下依赖关系:

section.lo: section.c $(INCDIR)/filenames.h $(INCDIR)/hashtab.h /

  $(INCDIR)/bfdlink.h

直接调用libtool这个脚本,编译.c文件并生成同名的.o.lo文件。

 

1.2.2.15       syms.lo

这个目标的生成依赖于通用规则:

.c.lo:

       $(LTCOMPILE) -c -o $@ $<

同时有以下依赖关系:

syms.lo: syms.c $(INCDIR)/filenames.h $(INCDIR)/hashtab.h /

  $(INCDIR)/safe-ctype.h $(INCDIR)/bfdlink.h $(INCDIR)/aout/stab_gnu.h /

  $(INCDIR)/aout/stab.def

直接调用libtool这个脚本,编译.c文件并生成同名的.o.lo文件。

 

1.2.2.16       targets.lo

这个目标的生成依赖于通用规则:

.c.lo:

       $(LTCOMPILE) -c -o $@ $<

同时有以下依赖关系:

targets.lo: targets.c $(INCDIR)/filenames.h $(INCDIR)/hashtab.h /

  $(INCDIR)/fnmatch.h targmatch.h

直接调用libtool这个脚本,编译.c文件并生成同名的.o.lo文件。

 

1.2.2.17       hash.lo

这个目标的生成依赖于通用规则:

.c.lo:

       $(LTCOMPILE) -c -o $@ $<

同时有以下依赖关系:

hash.lo: hash.c $(INCDIR)/filenames.h $(INCDIR)/hashtab.h /

  $(INCDIR)/objalloc.h $(INCDIR)/libiberty.h

直接调用libtool这个脚本,编译.c文件并生成同名的.o.lo文件。

 

1.2.2.18       linker.lo

这个目标的生成依赖于通用规则:

.c.lo:

       $(LTCOMPILE) -c -o $@ $<

同时有以下依赖关系:

linker.lo: linker.c $(INCDIR)/filenames.h $(INCDIR)/hashtab.h /

  $(INCDIR)/bfdlink.h genlink.h

直接调用libtool这个脚本,编译.c文件并生成同名的.o.lo文件。

 

1.2.2.19       srec.lo

这个目标的生成依赖于通用规则:

.c.lo:

       $(LTCOMPILE) -c -o $@ $<

同时有以下依赖关系:

srec.lo: srec.c $(INCDIR)/filenames.h $(INCDIR)/hashtab.h /

  $(INCDIR)/libiberty.h $(INCDIR)/safe-ctype.h

直接调用libtool这个脚本,编译.c文件并生成同名的.o.lo文件。

 

1.2.2.20       binary.lo

这个目标的生成依赖于通用规则:

.c.lo:

       $(LTCOMPILE) -c -o $@ $<

同时有以下依赖关系:

binary.lo: binary.c $(INCDIR)/filenames.h $(INCDIR)/safe-ctype.h /

  $(INCDIR)/hashtab.h

直接调用libtool这个脚本,编译.c文件并生成同名的.o.lo文件。

 

1.2.2.21       tekhex.lo

这个目标的生成依赖于通用规则:

.c.lo:

       $(LTCOMPILE) -c -o $@ $<

同时有以下依赖关系:

tekhex.lo: tekhex.c $(INCDIR)/filenames.h $(INCDIR)/hashtab.h /

  $(INCDIR)/libiberty.h

直接调用libtool这个脚本,编译.c文件并生成同名的.o.lo文件。

 

1.2.2.22       ihex.lo

这个目标的生成依赖于通用规则:

.c.lo:

       $(LTCOMPILE) -c -o $@ $<

同时有以下依赖关系:

ihex.lo: ihex.c $(INCDIR)/filenames.h $(INCDIR)/hashtab.h /

  $(INCDIR)/libiberty.h $(INCDIR)/safe-ctype.h

直接调用libtool这个脚本,编译.c文件并生成同名的.o.lo文件。

 

1.2.2.23       stabs.lo

这个目标的生成依赖于通用规则:

.c.lo:

       $(LTCOMPILE) -c -o $@ $<

同时有以下依赖关系:

stabs.lo: stabs.c $(INCDIR)/filenames.h $(INCDIR)/hashtab.h /

  $(INCDIR)/aout/stab_gnu.h $(INCDIR)/aout/stab.def $(INCDIR)/safe-ctype.h

直接调用libtool这个脚本,编译.c文件并生成同名的.o.lo文件。

 

1.2.2.24       stab-syms.lo

这个目标的生成依赖于通用规则:

.c.lo:

       $(LTCOMPILE) -c -o $@ $<

同时有以下依赖关系:

stab-syms.lo: stab-syms.c libaout.h $(INCDIR)/bfdlink.h /

  $(INCDIR)/aout/aout64.h $(INCDIR)/aout/stab.def

直接调用libtool这个脚本,编译.c文件并生成同名的.o.lo文件。

 

1.2.2.25       merge.lo

这个目标的生成依赖于通用规则:

.c.lo:

       $(LTCOMPILE) -c -o $@ $<

同时有以下依赖关系:

merge.lo: merge.c $(INCDIR)/filenames.h $(INCDIR)/hashtab.h /

  $(INCDIR)/libiberty.h

直接调用libtool这个脚本,编译.c文件并生成同名的.o.lo文件。

 

1.2.2.26       dwarf2.lo

这个目标的生成依赖于通用规则:

.c.lo:

       $(LTCOMPILE) -c -o $@ $<

同时有以下依赖关系:

dwarf2.lo: dwarf2.c $(INCDIR)/filenames.h $(INCDIR)/libiberty.h /

  $(INCDIR)/hashtab.h elf-bfd.h $(INCDIR)/elf/common.h /

  $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h /

  $(INCDIR)/elf/dwarf2.h

直接调用libtool这个脚本,编译.c文件并生成同名的.o.lo文件。

 

1.2.2.27       simple.lo

这个目标的生成依赖于通用规则:

.c.lo:

       $(LTCOMPILE) -c -o $@ $<

同时有以下依赖关系:

simple.lo: simple.c $(INCDIR)/filenames.h $(INCDIR)/hashtab.h /

  $(INCDIR)/bfdlink.h

直接调用libtool这个脚本,编译.c文件并生成同名的.o.lo文件。

 

1.2.3   $(libbfd_la_DEPENDENCIES)

这个变量定义为:

libbfd_la_DEPENDENCIES = $(OFILES) ofiles

OFILES = $(BFD_BACKENDS) $(BFD_MACHINES)

BFD_BACKENDS =  elf32-bfin.lo elf32.lo elf.lo elflink.lo elf-attrs.lo elf-strtab.lo elf-eh-frame.lo dwarf1.lo elf32-gen.lo

BFD_MACHINES =  cpu-bfin.lo

 

1.2.3.1             elf32-bfin.lo

这个目标的生成依赖于通用规则:

.c.lo:

       $(LTCOMPILE) -c -o $@ $<

同时有以下依赖关系:

elf32-bfin.lo: elf32-bfin.c $(INCDIR)/filenames.h $(INCDIR)/hashtab.h /

  elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h /

  $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(INCDIR)/elf/bfin.h /

  $(INCDIR)/elf/reloc-macros.h $(INCDIR)/elf/dwarf2.h /

  elf32-target.h

elf32-target.h外,其余均为源文件,直接调用libtool这个脚本,编译.c文件并生成同名的.o.lo文件。

1.2.3.1.1       elf32-target.h

这条规则定义为:

elf32-target.h : elfxx-target.h

       rm -f elf32-target.h

       sed -e s/NN/32/g < $(srcdir)/elfxx-target.h > elf32-target.new

       mv -f elf32-target.new elf32-target.h

简单替换而已。

1.2.3.2             elf32.lo

这个目标的生成依赖于通用规则:

.c.lo:

       $(LTCOMPILE) -c -o $@ $<

同时有以下依赖关系:

elf32.lo: elf32.c elfcode.h $(INCDIR)/filenames.h $(INCDIR)/libiberty.h /

  $(INCDIR)/bfdlink.h $(INCDIR)/hashtab.h elf-bfd.h $(INCDIR)/elf/common.h /

  $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h elfcore.h

直接调用libtool这个脚本,编译.c文件并生成同名的.o.lo文件。

 

1.2.3.3             elf.lo

这个目标的生成依赖于通用规则:

.c.lo:

       $(LTCOMPILE) -c -o $@ $<

同时有以下依赖关系:

elf.lo: elf.c $(INCDIR)/filenames.h $(INCDIR)/bfdlink.h /

  $(INCDIR)/hashtab.h elf-bfd.h $(INCDIR)/elf/common.h /

  $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h $(INCDIR)/libiberty.h /

  $(INCDIR)/safe-ctype.h $(INCDIR)/md5.h

直接调用libtool这个脚本,编译.c文件并生成同名的.o.lo文件。

 

1.2.3.4             elflink.lo

这个目标的生成依赖于通用规则:

.c.lo:

       $(LTCOMPILE) -c -o $@ $<

同时有以下依赖关系:

elflink.lo: elflink.c $(INCDIR)/filenames.h $(INCDIR)/bfdlink.h /

  $(INCDIR)/hashtab.h elf-bfd.h $(INCDIR)/elf/common.h /

  $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h $(INCDIR)/safe-ctype.h /

  $(INCDIR)/libiberty.h $(INCDIR)/objalloc.h

直接调用libtool这个脚本,编译.c文件并生成同名的.o.lo文件。

 

1.2.3.5             elf-attrs.lo

这个目标的生成依赖于通用规则:

.c.lo:

       $(LTCOMPILE) -c -o $@ $<

同时有以下依赖关系:

elf-attrs.lo: elf-attrs.c $(INCDIR)/filenames.h $(INCDIR)/libiberty.h /

  $(INCDIR)/hashtab.h elf-bfd.h $(INCDIR)/elf/common.h /

  $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h

直接调用libtool这个脚本,编译.c文件并生成同名的.o.lo文件。

 

1.2.3.6             elf-strtab.lo

这个目标的生成依赖于通用规则:

.c.lo:

       $(LTCOMPILE) -c -o $@ $<

同时有以下依赖关系:

elf-strtab.lo: elf-strtab.c $(INCDIR)/filenames.h $(INCDIR)/hashtab.h /

  elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h /

  $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(INCDIR)/libiberty.h

直接调用libtool这个脚本,编译.c文件并生成同名的.o.lo文件。

 

1.2.3.7             elf-eh-frame.lo

这个目标的生成依赖于通用规则:

.c.lo:

       $(LTCOMPILE) -c -o $@ $<

同时有以下依赖关系:

elf-eh-frame.lo: elf-eh-frame.c $(INCDIR)/filenames.h /

  $(INCDIR)/hashtab.h elf-bfd.h $(INCDIR)/elf/common.h /

  $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h /

  $(INCDIR)/elf/dwarf2.h

直接调用libtool这个脚本,编译.c文件并生成同名的.o.lo文件。

 

1.2.3.8             dwarf1.lo

这个目标的生成依赖于通用规则:

.c.lo:

       $(LTCOMPILE) -c -o $@ $<

同时有以下依赖关系:

dwarf1.lo: dwarf1.c $(INCDIR)/filenames.h $(INCDIR)/libiberty.h /

  $(INCDIR)/hashtab.h elf-bfd.h $(INCDIR)/elf/common.h /

  $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h /

  $(INCDIR)/elf/dwarf.h

直接调用libtool这个脚本,编译.c文件并生成同名的.o.lo文件。

 

1.2.3.9             elf32-gen.lo

这个目标的生成依赖于通用规则:

.c.lo:

       $(LTCOMPILE) -c -o $@ $<

同时有以下依赖关系:

elf32-gen.lo: elf32-gen.c $(INCDIR)/filenames.h $(INCDIR)/hashtab.h /

  elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h /

  $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h elf32-target.h

直接调用libtool这个脚本,编译.c文件并生成同名的.o.lo文件。

 

1.2.3.10       cpu-bfin.lo

这个目标的生成依赖于通用规则:

.c.lo:

       $(LTCOMPILE) -c -o $@ $<

同时有以下依赖关系:

cpu-bfin.lo: cpu-bfin.c $(INCDIR)/filenames.h $(INCDIR)/hashtab.h

直接调用libtool这个脚本,编译.c文件并生成同名的.o.lo文件。

 

1.2.3.11       ofiles

这条规则定义为:

stamp-ofiles: Makefile

       rm -f tofiles

       f=""; /

       for i in $(OFILES) ; do /

         case " $$f " in /

           *" $$i "*) ;; /

           *) f="$$f $$i" ;; /

         esac ; /

       done ; /

       echo $$f > tofiles

       $(SHELL) $(srcdir)/../move-if-change tofiles ofiles

       touch stamp-ofiles

 

ofiles: stamp-ofiles ; @true

它将简单地生成ofiles这个文件。

2       目标生成顺序

以下是所有目标的生成顺序:

bfd/Makefile: all: begin

bfd/Makefile: stmp-bfd-h: begin

bfd/Makefile: stmp-bfd-h: end

bfd/Makefile: archive.lo: begin

bfd/Makefile: archive.lo: end

bfd/Makefile: archures.lo: begin

bfd/Makefile: archures.lo: end

bfd/Makefile: bfd.lo: begin

bfd/Makefile: bfd.lo: end

bfd/Makefile: bfdio.lo: begin

bfd/Makefile: bfdio.lo: end

bfd/Makefile: bfdwin.lo: begin

bfd/Makefile: bfdwin.lo: end

bfd/Makefile: cache.lo: begin

bfd/Makefile: cache.lo: end

bfd/Makefile: coffgen.lo: begin

bfd/Makefile: coffgen.lo: end

bfd/Makefile: corefile.lo: begin

bfd/Makefile: corefile.lo: end

bfd/Makefile: format.lo: begin

bfd/Makefile: format.lo: end

bfd/Makefile: init.lo: begin

bfd/Makefile: init.lo: end

bfd/Makefile: libbfd.lo: begin

bfd/Makefile: libbfd.lo: end

bfd/Makefile: opncls.lo: begin

bfd/Makefile: opncls.lo: end

bfd/Makefile: reloc.lo: begin

bfd/Makefile: reloc.lo: end

bfd/Makefile: section.lo: begin

bfd/Makefile: section.lo: end

bfd/Makefile: syms.lo: begin

bfd/Makefile: syms.lo: end

bfd/Makefile: hash.lo: begin

bfd/Makefile: hash.lo: end

bfd/Makefile: linker.lo: begin

bfd/Makefile: linker.lo: end

bfd/Makefile: srec.lo: begin

bfd/Makefile: srec.lo: end

bfd/Makefile: binary.lo: begin

bfd/Makefile: binary.lo: end

bfd/Makefile: tekhex.lo: begin

bfd/Makefile: tekhex.lo: end

bfd/Makefile: ihex.lo: begin

bfd/Makefile: ihex.lo: end

bfd/Makefile: stabs.lo: begin

bfd/Makefile: stabs.lo: end

bfd/Makefile: stab-syms.lo: begin

bfd/Makefile: stab-syms.lo: end

bfd/Makefile: merge.lo: begin

bfd/Makefile: merge.lo: end

bfd/Makefile: simple.lo: begin

bfd/Makefile: simple.lo: end

bfd/Makefile: elf32-target.h: begin

bfd/Makefile: elf32-target.h: end

bfd/Makefile: elf32-bfin.lo: begin

bfd/Makefile: elf32-bfin.lo: end

bfd/Makefile: elf32.lo: begin

bfd/Makefile: elf32.lo: end

bfd/Makefile: elf.lo: begin

bfd/Makefile: elf.lo: end

bfd/Makefile: elflink.lo: begin

bfd/Makefile: elflink.lo: end

bfd/Makefile: elf-attrs.lo: begin

bfd/Makefile: elf-attrs.lo: end

bfd/Makefile: elf-strtab.lo: begin

bfd/Makefile: elf-strtab.lo: end

bfd/Makefile: elf-eh-frame.lo: begin

bfd/Makefile: elf-eh-frame.lo: end

bfd/Makefile: dwarf1.lo: begin

bfd/Makefile: dwarf1.lo: end

bfd/Makefile: elf32-gen.lo: begin

bfd/Makefile: elf32-gen.lo: end

bfd/Makefile: cpu-bfin.lo: begin

bfd/Makefile: cpu-bfin.lo: end

bfd/Makefile: stamp-ofiles: begin

bfd/Makefile: stamp-ofiles: end

bfd/Makefile: libbfd.la: begin

bfd/Makefile: libbfd.la: end

bfd/Makefile: stamp-lib: begin

bfd/Makefile: stamp-lib: end

bfd/Makefile: all: end

 

 

 

3       参考资料

binutils-2.18/libiberty/Makefile分析 2008-8-27

 

 

 

 

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 9
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

嵌云阁主

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值