快乐虾
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是在vc的stdlib.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下使用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 )