快乐虾
http://blog.csdn.net/lights_joy/
lights@hb165.com
本文适用于
Cygwin-1.16
Vs2008
欢迎转载,但请保留作者信息
这个文件由主控Makefile调用configure脚本生成,并在i686-pc-cygwin/newlib/ Makefile中调用make all。all目标定义为:
all: all-recursive
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 all操作,然后在当前目录下执行make all-am。
1.1.1 all-am
这条规则定义为:
all-am: Makefile $(LIBRARIES) $(LTLIBRARIES)
LIBRARIES = $(noinst_LIBRARIES)
noinst_LIBRARIES = libm.a
LTLIBRARIES = $(noinst_LTLIBRARIES)
noinst_LTLIBRARIES未定义。
因此这个目标将转而依赖libc.a这个子目标,
libm.a: $(SUBLIBS)
rm -f $@
rm -rf tmp
mkdir tmp
cd tmp; /
for i in $(SUBLIBS); do /
$(AR) x ../$$i; /
done; /
$(AR) $(AR_FLAGS) ../$@ *.o
$(RANLIB) $@
rm -rf tmp
由于各个子目录下的目标均已经生成,上述脚本将它们生成的.o文件打包成libm.a这个静态库。
参考资料
在vs2008下使用cygwin(1):前言( 2008-10-16 )
在vs2008下使用cygwin(2):i686-pc-cygwin/newlib/Makefile分析( 2008-10-16 )
在vs2008下使用cygwin(3):i686-pc-cygwin/newlib/libc/Makefile分析( 2008-10-16 )
在vs2008下使用cygwin(4):i686-pc-cygwin/newlib/libc/argz/Makefile分析( 2008-10-16 )
在vs2008下使用cygwin(5):i686-pc-cygwin/newlib/libc/stdlib/Makefile分析( 2008-10-16 )
在vs2008下使用cygwin(6):i686-pc-cygwin/newlib/libc/ctype/Makefile分析( 2008-10-16 )
在vs2008下使用cygwin(7):i686-pc-cygwin/newlib/libc/search/Makefile分析( 2008-10-16 )
在vs2008下使用cygwin(8):i686-pc-cygwin/newlib/libc/stdio/Makefile分析( 2008-10-16 )
在vs2008下使用cygwin(9):i686-pc-cygwin/newlib/libc/stdio64/Makefile分析( 2008-10-16 )
在vs2008下使用cygwin(10):i686-pc-cygwin/newlib/libc/string/Makefile分析 ( 2008-10-16 )
在vs2008下使用cygwin(11):i686-pc-cygwin/newlib/libc/signal/Makefile分析 ( 2008-10-16 )
在vs2008下使用cygwin(12):i686-pc-cygwin/newlib/libc/time/Makefile分析 ( 2008-10-16 )
在vs2008下使用cygwin(13):i686-pc-cygwin/newlib/libc/locale/Makefile分析 ( 2008-10-16 )
在vs2008下使用cygwin(14):i686-pc-cygwin/newlib/libc/reent/Makefile分析 ( 2008-10-16 )
在vs2008下使用cygwin(15):i686-pc-cygwin/newlib/libc/misc/Makefile分析 ( 2008-10-16 )
在vs2008下使用cygwin(16):i686-pc-cygwin/newlib/libc/machine/i386/Makefile分析 ( 2008-10-16 )
在vs2008下使用cygwin(17):i686-pc-cygwin/newlib/libc/posix/Makefile分析 ( 2008-10-16 )
在vs2008下使用cygwin(18):i686-pc-cygwin/newlib/libc/syscalls/Makefile分析 ( 2008-10-16 )