在vs2008下使用cygwin(19):i686-pc-cygwin/newlib/libm/Makefile分析

 

快乐虾

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

lights@hb165.com

   

 

本文适用于

Cygwin-1.16

Vs2008

   

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

 

这个文件由主控Makefile调用configure脚本生成,并在i686-pc-cygwin/newlib/ Makefile中调用make allall目标定义为:

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下使用cygwin1):前言( 2008-10-16 )

vs2008下使用cygwin2):i686-pc-cygwin/newlib/Makefile分析( 2008-10-16 )

vs2008下使用cygwin3):i686-pc-cygwin/newlib/libc/Makefile分析( 2008-10-16 )

vs2008下使用cygwin4):i686-pc-cygwin/newlib/libc/argz/Makefile分析( 2008-10-16 )

vs2008下使用cygwin5):i686-pc-cygwin/newlib/libc/stdlib/Makefile分析( 2008-10-16 )

vs2008下使用cygwin6):i686-pc-cygwin/newlib/libc/ctype/Makefile分析( 2008-10-16 )

vs2008下使cygwin7):i686-pc-cygwin/newlib/libc/search/Makefile分析( 2008-10-16 )

vs2008下使用cygwin8):i686-pc-cygwin/newlib/libc/stdio/Makefile分析( 2008-10-16 )

vs2008下使用cygwin9):i686-pc-cygwin/newlib/libc/stdio64/Makefile分析( 2008-10-16 )

vs2008下使用cygwin10):i686-pc-cygwin/newlib/libc/string/Makefile分析 ( 2008-10-16 )

vs2008下使用cygwin11):i686-pc-cygwin/newlib/libc/signal/Makefile分析 ( 2008-10-16 )

vs2008下使用cygwin12):i686-pc-cygwin/newlib/libc/time/Makefile分析 ( 2008-10-16 )

vs2008下使用cygwin13):i686-pc-cygwin/newlib/libc/locale/Makefile分析 ( 2008-10-16 )

vs2008下使用cygwin14):i686-pc-cygwin/newlib/libc/reent/Makefile分析 ( 2008-10-16 )

vs2008下使用cygwin15):i686-pc-cygwin/newlib/libc/misc/Makefile分析 ( 2008-10-16 )

vs2008下使用cygwin16):i686-pc-cygwin/newlib/libc/machine/i386/Makefile分析 ( 2008-10-16 )

vs2008下使用cygwin17):i686-pc-cygwin/newlib/libc/posix/Makefile分析 ( 2008-10-16 )

vs2008下使用cygwin18):i686-pc-cygwin/newlib/libc/syscalls/Makefile分析 ( 2008-10-16 )

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

嵌云阁主

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

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

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

打赏作者

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

抵扣说明:

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

余额充值