在vs2008下使用cygwin(17):i686-pc-cygwin/newlib/libc/posix/Makefile分析

 

快乐虾

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

lights@hb165.com

   

本文适用于

Cygwin-1.16

Vs2008

   

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

 

 

这个Makefile由上一级目录的makefile调用make all执行。All目标定义为:

all: all-am

all-am: Makefile $(LIBRARIES) $(LTLIBRARIES) $(DATA)

LIBRARIES = $(noinst_LIBRARIES)

noinst_LIBRARIES = lib.a

LTLIBRARIES = $(noinst_LTLIBRARIES)

noinst_LTLIBRARIES未定义

DATA = $(noinst_DATA)

noinst_DATA =

因而此目标将依赖于lib.a目标,其定义为:

lib.a: $(lib_a_OBJECTS) $(lib_a_DEPENDENCIES)

       -rm -f lib.a

       $(lib_a_AR) lib.a $(lib_a_OBJECTS) $(lib_a_LIBADD)

       $(RANLIB) lib.a

在生成所需要的目标文件后,上述脚本将它们打包成lib.a文件。

由于有以下定义:

lib_a_OBJECTS = $(am_lib_a_OBJECTS)

am__objects_1 = lib_a-closedir.$(OBJEXT) lib_a-creat.$(OBJEXT) /

       lib_a-_isatty.$(OBJEXT) lib_a-isatty.$(OBJEXT) /

       lib_a-opendir.$(OBJEXT) lib_a-readdir.$(OBJEXT) /

       lib_a-readdir_r.$(OBJEXT) lib_a-rewinddir.$(OBJEXT) /

       lib_a-sleep.$(OBJEXT) lib_a-usleep.$(OBJEXT) /

       lib_a-telldir.$(OBJEXT)

am__objects_2 = lib_a-scandir.$(OBJEXT) lib_a-seekdir.$(OBJEXT)

am__objects_3 = lib_a-execl.$(OBJEXT) lib_a-execle.$(OBJEXT) /

       lib_a-execlp.$(OBJEXT) lib_a-execv.$(OBJEXT) /

       lib_a-execve.$(OBJEXT) lib_a-execvp.$(OBJEXT)

am__objects_4 = lib_a-popen.$(OBJEXT)

am__objects_5 = $(am__objects_2) /

       $(am__objects_3) /

       $(am__objects_4)

#am__objects_5 = $(am__objects_2) /

#     $(am__objects_3)

#am__objects_5 =  /

#     $(am__objects_2)

am_lib_a_OBJECTS = $(am__objects_1) /

       $(am__objects_5)

因而此目标有以下的依赖关系。

1.1.1.1             lib_a-closedir.$(OBJEXT)

这个目标定义为:

lib_a-closedir.o: closedir.c

       $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-closedir.o `test -f 'closedir.c' || echo '$(srcdir)/'`closedir.c

直接编译即可。

由于定义了HAVE_OPENDIR,这个文件啥事也不做。

 

1.1.1.2             lib_a-creat.$(OBJEXT)

这个目标定义为:

lib_a-creat.o: creat.c

       $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-creat.o `test -f 'creat.c' || echo '$(srcdir)/'`creat.c

直接编译即可。

 

1.1.1.3             lib_a-_isatty.$(OBJEXT)

这个目标定义为:

lib_a-_isatty.o: _isatty.c

       $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-_isatty.o `test -f '_isatty.c' || echo '$(srcdir)/'`_isatty.c

直接编译即可。

 

1.1.1.4             lib_a-isatty.$(OBJEXT)

这个目标定义为:

lib_a-isatty.o: isatty.c

       $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-isatty.o `test -f 'isatty.c' || echo '$(srcdir)/'`isatty.c

直接编译即可。

 

1.1.1.5             lib_a-opendir.$(OBJEXT)

这个目标定义为:

lib_a-opendir.o: opendir.c

       $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-opendir.o `test -f 'opendir.c' || echo '$(srcdir)/'`opendir.c

直接编译即可。

由于定义了HAVE_OPENDIR,这个文件啥事也不做。

 

1.1.1.6             lib_a-readdir.$(OBJEXT)

这个目标定义为:

lib_a-readdir.o: readdir.c

       $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-readdir.o `test -f 'readdir.c' || echo '$(srcdir)/'`readdir.c

直接编译即可。

由于定义了HAVE_OPENDIR,这个文件啥事也不做。

 

1.1.1.7             lib_a-readdir_r.$(OBJEXT)

这个目标定义为:

lib_a-readdir_r.o: readdir_r.c

       $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-readdir_r.o `test -f 'readdir_r.c' || echo '$(srcdir)/'`readdir_r.c

直接编译即可。

由于定义了HAVE_OPENDIR,这个文件啥事也不做。

 

1.1.1.8             lib_a-rewinddir.$(OBJEXT)

这个目标定义为:

lib_a-rewinddir.o: rewinddir.c

       $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-rewinddir.o `test -f 'rewinddir.c' || echo '$(srcdir)/'`rewinddir.c

直接编译即可。

由于定义了HAVE_OPENDIR,这个文件啥事也不做。

 

1.1.1.9             lib_a-sleep.$(OBJEXT)

这个目标定义为:

lib_a-sleep.o: sleep.c

       $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-sleep.o `test -f 'sleep.c' || echo '$(srcdir)/'`sleep.c

直接编译即可。

由于未定义HAVE_NANOSLEEP,这个文件啥事也不做。

 

1.1.1.10       lib_a-usleep.$(OBJEXT)

这个目标定义为:

lib_a-usleep.o: usleep.c

       $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-usleep.o `test -f 'usleep.c' || echo '$(srcdir)/'`usleep.c

直接编译即可。

由于未定义HAVE_NANOSLEEP,这个文件啥事也不做。

 

1.1.1.11       lib_a-telldir.$(OBJEXT)

这个目标定义为:

lib_a-telldir.o: telldir.c

       $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-telldir.o `test -f 'telldir.c' || echo '$(srcdir)/'`telldir.c

直接编译即可。

由于定义了HAVE_OPENDIR,这个文件啥事也不做。

 

1.1.1.12       lib_a-scandir.$(OBJEXT)

这个目标定义为:

lib_a-scandir.o: scandir.c

       $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-scandir.o `test -f 'scandir.c' || echo '$(srcdir)/'`scandir.c

直接编译即可。

由于定义了HAVE_OPENDIR,这个文件啥事也不做。

 

1.1.1.13       lib_a-seekdir.$(OBJEXT)

这个目标定义为:

lib_a-seekdir.o: seekdir.c

       $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-seekdir.o `test -f 'seekdir.c' || echo '$(srcdir)/'`seekdir.c

直接编译即可。

由于定义了HAVE_OPENDIR,这个文件啥事也不做。

 

1.1.1.14       lib_a-execl.$(OBJEXT)

这个目标定义为:

lib_a-execl.o: execl.c

       $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-execl.o `test -f 'execl.c' || echo '$(srcdir)/'`execl.c

直接编译即可。

这个文件的问题在于以下定义:

static char ***p_environ = &environ;

将造成__environ链接错误。可将这两个定义屏掉,然后在后面使用*p_environ的地方用_environ替换,_environ是在vcstdlib.h中定义的一个变量。

1.1.1.15       lib_a-execle.$(OBJEXT)

这个目标定义为:

lib_a-execle.o: execle.c

       $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-execle.o `test -f 'execle.c' || echo '$(srcdir)/'`execle.c

直接编译即可。

 

1.1.1.16       lib_a-execlp.$(OBJEXT)

这个目标定义为:

lib_a-execlp.o: execlp.c

       $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-execlp.o `test -f 'execlp.c' || echo '$(srcdir)/'`execlp.c

直接编译即可。

 

1.1.1.17       lib_a-execv.$(OBJEXT)

这个目标定义为:

lib_a-execv.o: execv.c

       $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-execv.o `test -f 'execv.c' || echo '$(srcdir)/'`execv.c

直接编译即可。

 

1.1.1.18       lib_a-execve.$(OBJEXT)

这个目标定义为:

lib_a-execve.o: execve.c

       $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-execve.o `test -f 'execve.c' || echo '$(srcdir)/'`execve.c

直接编译即可。

 

1.1.1.19       lib_a-execvp.$(OBJEXT)

这个目标定义为:

lib_a-execvp.o: execvp.c

       $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-execvp.o `test -f 'execvp.c' || echo '$(srcdir)/'`execvp.c

直接编译即可。

 

1.1.1.20       lib_a-popen.$(OBJEXT)

这个目标定义为:

lib_a-popen.o: popen.c

       $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-popen.o `test -f 'popen.c' || echo '$(srcdir)/'`popen.c

直接编译即可。

 

 

 

参考资料

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 )

 

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

嵌云阁主

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

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

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

打赏作者

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

抵扣说明:

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

余额充值