从零开始,学习windows编程外篇(1)--分析lib文件

大家都知道,lib文件是很多obj文件合在一起得到的一个静态库文件。那某一个特定的lib文件,到底是由哪些obj文件组成的呢?

有一个工具可以帮到你,它的名字叫做lib.exe。

还是用LIBC.LIB来举例。我电脑上这个lib文件的位置是在“d:\Program Files\Microsoft Visual Studio\VC98\Lib\LIBC.LIB”,进入这个目录。

所有的lib使用选项:

d:\Program Files\Microsoft Visual Studio\VC98\Lib>lib /?
Microsoft (R) Library Manager Version 6.00.8447
Copyright (C) Microsoft Corp 1992-1998. All rights reserved.

usage: LIB [options] [files]

   options:

      /CONVERT
      /DEBUGTYPE:CV
      /DEF[:filename]
      /EXPORT:symbol
      /EXTRACT:membername
      /INCLUDE:symbol
      /LIBPATH:dir
      /LINK50COMPAT
      /LIST[:filename]
      /MACHINE:{ALPHA|ARM|IX86|MIPS|MIPS16|MIPSR41XX|PPC|SH3|SH4}
      /NAME:filename
      /NODEFAULTLIB[:library]
      /NOLOGO
      /OUT:filename
      /REMOVE:membername
      /SUBSYSTEM:{NATIVE|WINDOWS|CONSOLE|WINDOWSCE|POSIX}[,#[.##]]
      /VERBOSE

可以使用list来显示其中的obj文件。

d:\Program Files\Microsoft Visual Studio\VC98\Lib>lib /list libc.lib

整个列表比较长,所以我又做了个重定向,将输入放到log文件中了。

d:\Program Files\Microsoft Visual Studio\VC98\Lib>lib /list libc.lib > d:\test\libc.log

最终输出有600多行,所以折叠起来,大家可以展开看。

Microsoft (R) Library Manager Version 6.00.8447
Copyright (C) Microsoft Corp 1992-1998. All rights reserved.

..\build\intel\st_obj\util.obj
..\build\intel\st_obj\matherr.obj
..\build\intel\st_obj\ldexp.obj
..\build\intel\st_obj\ieeemisc.obj
..\build\intel\st_obj\frexp.obj
..\build\intel\st_obj\fpexcept.obj
..\build\intel\st_obj\bessel.obj
..\build\intel\st_obj\xmmi2_fp_emul.obj
..\build\intel\st_obj\xmmi_fp_emul.obj
..\build\intel\st_obj\sqrt.obj
..\build\intel\st_obj\pow.obj
..\build\intel\st_obj\log10.obj
..\build\intel\st_obj\log.obj
..\build\intel\st_obj\tan.obj
..\build\intel\st_obj\cos.obj
..\build\intel\st_obj\sin.obj
..\build\intel\st_obj\atan.obj
..\build\intel\st_obj\acos.obj
..\build\intel\st_obj\asin.obj
..\build\intel\st_obj\testfdiv.obj
..\build\intel\st_obj\powhlp.obj
..\build\intel\st_obj\modf.obj
..\build\intel\st_obj\ieee87.obj
..\build\intel\st_obj\hypot.obj
..\build\intel\st_obj\huge.obj
..\build\intel\st_obj\genexcep.obj
..\build\intel\st_obj\ftol.obj
..\build\intel\st_obj\fsqrt.obj
..\build\intel\st_obj\frnd.obj
..\build\intel\st_obj\fpctrl.obj
..\build\intel\st_obj\floor.obj
..\build\intel\st_obj\filter_simd.obj
..\build\intel\st_obj\filter.obj
..\build\intel\st_obj\fabs.obj
..\build\intel\st_obj\common.obj
..\build\intel\st_obj\ceil.obj
..\build\intel\st_obj\adj_fdiv.obj
..\build\intel\st_obj\87trigh.obj
..\build\intel\st_obj\87triga.obj
..\build\intel\st_obj\87trig.obj
..\build\intel\st_obj\87tran.obj
..\build\intel\st_obj\87sqrt.obj
..\build\intel\st_obj\87fmod.obj
..\build\intel\st_obj\87except.obj
..\build\intel\st_obj\87disp.obj
..\build\intel\st_obj\87ctrigh.obj
..\build\intel\st_obj\87ctriga.obj
..\build\intel\st_obj\87ctran.obj
..\build\intel\st_obj\87cdisp.obj
..\build\intel\st_obj\fltinf.obj
..\build\intel\st_obj\x10fout.obj
..\build\intel\st_obj\tenpow.obj
..\build\intel\st_obj\strgtold.obj
..\build\intel\st_obj\mantold.obj
..\build\intel\st_obj\intrncvt.obj
..\build\intel\st_obj\fpinit.obj
..\build\intel\st_obj\cvt.obj
..\build\intel\st_obj\constpow.obj
..\build\intel\st_obj\cfout.obj
..\build\intel\st_obj\cfin.obj
build\intel\st_obj\wutime.obj
build\intel\st_obj\wstrtime.obj
build\intel\st_obj\wstrdate.obj
build\intel\st_obj\wctime.obj
build\intel\st_obj\wasctime.obj
build\intel\st_obj\wcsftime.obj
build\intel\st_obj\utime.obj
build\intel\st_obj\tzset.obj
build\intel\st_obj\timeset.obj
build\intel\st_obj\time.obj
build\intel\st_obj\systime.obj
build\intel\st_obj\strtime.obj
build\intel\st_obj\strdate.obj
build\intel\st_obj\strftime.obj
build\intel\st_obj\mktime.obj
build\intel\st_obj\localtim.obj
build\intel\st_obj\gmtime.obj
build\intel\st_obj\ftime.obj
build\intel\st_obj\dtoxtime.obj
build\intel\st_obj\difftime.obj
build\intel\st_obj\days.obj
build\intel\st_obj\ctime.obj
build\intel\st_obj\clock.obj
build\intel\st_obj\asctime.obj
build\intel\st_obj\tcmap\mbslen.obj
build\intel\st_obj\tcmap\nset.obj
build\intel\st_obj\tcmap\nicoll.obj
build\intel\st_obj\tcmap\nicmp.obj
build\intel\st_obj\tcmap\ncpy.obj
build\intel\st_obj\tcmap\ncoll.obj
build\intel\st_obj\tcmap\ncmp.obj
build\intel\st_obj\tcmap\ncat.obj
build\intel\st_obj\tcmap\nbset.obj
build\intel\st_obj\tcmap\nbicoll.obj
build\intel\st_obj\tcmap\nbicmp.obj
build\intel\st_obj\tcmap\nbcpy.obj
build\intel\st_obj\tcmap\nbcoll.obj
build\intel\st_obj\tcmap\nbcmp.obj
build\intel\st_obj\tcmap\nbcat.obj
build\intel\st_obj\tcmap\_mbscpy.obj
build\intel\st_obj\tcmap\_mbclen.obj
build\intel\st_obj\tcmap\len.obj
build\intel\st_obj\tcmap\icoll.obj
build\intel\st_obj\tcmap\coll.obj
build\intel\st_obj\tcmap\icmp.obj
build\intel\st_obj\tcmap\cmp.obj
build\intel\st_obj\tcmap\upr.obj
build\intel\st_obj\tcmap\lwr.obj
build\intel\st_obj\tcmap\spnp.obj
build\intel\st_obj\tcmap\ninc.obj
build\intel\st_obj\tcmap\nextc.obj
build\intel\st_obj\tcmap\nccnt.obj
build\intel\st_obj\tcmap\nbcnt.obj
build\intel\st_obj\tcmap\inc.obj
build\intel\st_obj\tcmap\dec.obj
build\intel\st_obj\tcmap\set.obj
build\intel\st_obj\tcmap\rev.obj
build\intel\st_obj\tcmap\tok.obj
build\intel\st_obj\tcmap\str.obj
build\intel\st_obj\tcmap\spn.obj
build\intel\st_obj\tcmap\rchr.obj
build\intel\st_obj\tcmap\pbrk.obj
build\intel\st_obj\tcmap\cspn.obj
build\intel\st_obj\tcmap\chr.obj
build\intel\st_obj\wcsxfrm.obj
build\intel\st_obj\wcsupr.obj
build\intel\st_obj\wcstok.obj
build\intel\st_obj\wcsstr.obj
build\intel\st_obj\wcsspn.obj
build\intel\st_obj\wcsset.obj
build\intel\st_obj\wcsrev.obj
build\intel\st_obj\wcsrchr.obj
build\intel\st_obj\wcspbrk.obj
build\intel\st_obj\wcsnset.obj
build\intel\st_obj\wcsnicol.obj
build\intel\st_obj\wcsnicmp.obj
build\intel\st_obj\wcsncpy.obj
build\intel\st_obj\wcsncoll.obj
build\intel\st_obj\wcsncmp.obj
build\intel\st_obj\wcsncat.obj
build\intel\st_obj\wcslwr.obj
build\intel\st_obj\wcslen.obj
build\intel\st_obj\wcsicoll.obj
build\intel\st_obj\wcsicmp.obj
build\intel\st_obj\wcsdup.obj
build\intel\st_obj\wcscspn.obj
build\intel\st_obj\wcscoll.obj
build\intel\st_obj\wcscmp.obj
build\intel\st_obj\wcschr.obj
build\intel\st_obj\wcscat.obj
build\intel\st_obj\strxfrm.obj
build\intel\st_obj\strupr.obj
build\intel\st_obj\strtok.obj
build\intel\st_obj\strnicol.obj
build\intel\st_obj\strncoll.obj
build\intel\st_obj\strlwr.obj
build\intel\st_obj\stricoll.obj
build\intel\st_obj\strcoll.obj
build\intel\st_obj\strstr.obj
build\intel\st_obj\strspn.obj
build\intel\st_obj\strset.obj
build\intel\st_obj\strrev.obj
build\intel\st_obj\strrchr.obj
build\intel\st_obj\strpbrk.obj
build\intel\st_obj\strnset.obj
build\intel\st_obj\strnicmp.obj
build\intel\st_obj\strncpy.obj
build\intel\st_obj\strncmp.obj
build\intel\st_obj\strncat.obj
build\intel\st_obj\strlen.obj
build\intel\st_obj\stricmp.obj
build\intel\st_obj\strdup.obj
build\intel\st_obj\strcspn.obj
build\intel\st_obj\strcmp.obj
build\intel\st_obj\strchr.obj
build\intel\st_obj\strcat.obj
build\intel\st_obj\memset.obj
build\intel\st_obj\memmove.obj
build\intel\st_obj\memicmp.obj
build\intel\st_obj\memccpy.obj
build\intel\st_obj\memcmp.obj
build\intel\st_obj\memchr.obj
build\intel\st_obj\memcpy.obj
build\intel\st_obj\ncommode.obj
build\intel\st_obj\wtmpfile.obj
build\intel\st_obj\wtempnam.obj
build\intel\st_obj\wscanf.obj
build\intel\st_obj\wprintf.obj
build\intel\st_obj\wpopen.obj
build\intel\st_obj\woutput.obj
build\intel\st_obj\_wopen.obj
build\intel\st_obj\winput.obj
build\intel\st_obj\wfreopen.obj
build\intel\st_obj\wfopen.obj
build\intel\st_obj\wfdopen.obj
build\intel\st_obj\vwprintf.obj
build\intel\st_obj\vswprint.obj
build\intel\st_obj\vsnwprnt.obj
build\intel\st_obj\vsnprint.obj
build\intel\st_obj\vsprintf.obj
build\intel\st_obj\vfwprint.obj
build\intel\st_obj\vfprintf.obj
build\intel\st_obj\vprintf.obj
build\intel\st_obj\ungetwc.obj
build\intel\st_obj\ungetc.obj
build\intel\st_obj\tmpfile.obj
build\intel\st_obj\tempnam.obj
build\intel\st_obj\swscanf.obj
build\intel\st_obj\swprintf.obj
build\intel\st_obj\stream.obj
build\intel\st_obj\sscanf.obj
build\intel\st_obj\sprintf.obj
build\intel\st_obj\snwprint.obj
build\intel\st_obj\snprintf.obj
build\intel\st_obj\setvbuf.obj
build\intel\st_obj\setbuf.obj
build\intel\st_obj\setmaxf.obj
build\intel\st_obj\scanf.obj
build\intel\st_obj\rmtmp.obj
build\intel\st_obj\rewind.obj
build\intel\st_obj\putws.obj
build\intel\st_obj\putw.obj
build\intel\st_obj\puts.obj
build\intel\st_obj\printf.obj
build\intel\st_obj\popen.obj
build\intel\st_obj\output.obj
build\intel\st_obj\input.obj
build\intel\st_obj\getws.obj
build\intel\st_obj\getw.obj
build\intel\st_obj\gets.obj
build\intel\st_obj\fwscanf.obj
build\intel\st_obj\fwrite.obj
build\intel\st_obj\fwprintf.obj
build\intel\st_obj\ftelli64.obj
build\intel\st_obj\ftell.obj
build\intel\st_obj\fsetpos.obj
build\intel\st_obj\fseeki64.obj
build\intel\st_obj\fseek.obj
build\intel\st_obj\fscanf.obj
build\intel\st_obj\freopen.obj
build\intel\st_obj\fread.obj
build\intel\st_obj\fprintf.obj
build\intel\st_obj\fopen.obj
build\intel\st_obj\fgetpos.obj
build\intel\st_obj\fflush.obj
build\intel\st_obj\fdopen.obj
build\intel\st_obj\fclose.obj
build\intel\st_obj\cscanf.obj
build\intel\st_obj\cprintf.obj
build\intel\st_obj\closeall.obj
build\intel\st_obj\clearerr.obj
build\intel\st_obj\_sftbuf.obj
build\intel\st_obj\_open.obj
build\intel\st_obj\_getbuf.obj
build\intel\st_obj\_freebuf.obj
build\intel\st_obj\_flswbuf.obj
build\intel\st_obj\_flsbuf.obj
build\intel\st_obj\_file.obj
build\intel\st_obj\_filwbuf.obj
build\intel\st_obj\_filbuf.obj
build\intel\st_obj\fputwchr.obj
build\intel\st_obj\fputws.obj
build\intel\st_obj\fputwc.obj
build\intel\st_obj\fputchar.obj
build\intel\st_obj\fputs.obj
build\intel\st_obj\fputc.obj
build\intel\st_obj\fileno.obj
build\intel\st_obj\fgetwchr.obj
build\intel\st_obj\fgetws.obj
build\intel\st_obj\fgetwc.obj
build\intel\st_obj\fgets.obj
build\intel\st_obj\fgetchar.obj
build\intel\st_obj\fgetc.obj
build\intel\st_obj\feoferr.obj
build\intel\st_obj\fp8.obj
build\intel\st_obj\atlssup.obj
build\intel\st_obj\wwincrt0.obj
build\intel\st_obj\wwild.obj
build\intel\st_obj\wwncmdln.obj
build\intel\st_obj\wstdenvp.obj
build\intel\st_obj\wstdargv.obj
build\intel\st_obj\wincrt0.obj
build\intel\st_obj\wincmdln.obj
build\intel\st_obj\wild.obj
build\intel\st_obj\wcrt0.obj
build\intel\st_obj\tlssup.obj
build\intel\st_obj\tidtable.obj
build\intel\st_obj\threadex.obj
build\intel\st_obj\thread.obj
build\intel\st_obj\stdenvp.obj
build\intel\st_obj\stdargv.obj
build\intel\st_obj\mlock.obj
build\intel\st_obj\dllmain.obj
build\intel\st_obj\dllcrt0.obj
build\intel\st_obj\crt0msg.obj
build\intel\st_obj\crt0init.obj
build\intel\st_obj\crt0fp.obj
build\intel\st_obj\crt0dat.obj
build\intel\st_obj\crt0.obj
build\intel\st_obj\chkstk.obj
build\intel\st_obj\_wstargv.obj
build\intel\st_obj\_setargv.obj
build\intel\st_obj\wtombenv.obj
build\intel\st_obj\wrt2err.obj
build\intel\st_obj\wsplitpa.obj
build\intel\st_obj\wsetloca.obj
build\intel\st_obj\wsetenv.obj
build\intel\st_obj\wsearche.obj
build\intel\st_obj\wputenv.obj
build\intel\st_obj\wperror.obj
build\intel\st_obj\wmakepat.obj
build\intel\st_obj\wgetpath.obj
build\intel\st_obj\wgetenv.obj
build\intel\st_obj\winxfltr.obj
build\intel\st_obj\winsig.obj
build\intel\st_obj\w_str.obj
build\intel\st_obj\w_map.obj
build\intel\st_obj\w_loc.obj
build\intel\st_obj\w_env.obj
build\intel\st_obj\w_cmp.obj
build\intel\st_obj\umask.obj
build\intel\st_obj\syserr.obj
build\intel\st_obj\strerror.obj
build\intel\st_obj\_strerr.obj
build\intel\st_obj\splitpat.obj
build\intel\st_obj\setlocal.obj
build\intel\st_obj\setenv.obj
build\intel\st_obj\searchen.obj
build\intel\st_obj\rotr.obj
build\intel\st_obj\rotl.obj
build\intel\st_obj\rand.obj
build\intel\st_obj\qsort.obj
build\intel\st_obj\putenv.obj
build\intel\st_obj\purevirt.obj
build\intel\st_obj\perror.obj
build\intel\st_obj\nlsdata3.obj
build\intel\st_obj\nlsdata2.obj
build\intel\st_obj\nlsdata1.obj
build\intel\st_obj\onexit.obj
build\intel\st_obj\mbtowenv.obj
build\intel\st_obj\makepath.obj
build\intel\st_obj\lsearch.obj
build\intel\st_obj\lfind.obj
build\intel\st_obj\ldiv.obj
build\intel\st_obj\lconv.obj
build\intel\st_obj\lcnvinit.obj
build\intel\st_obj\labs.obj
build\intel\st_obj\inittime.obj
build\intel\st_obj\initnum.obj
build\intel\st_obj\initmon.obj
build\intel\st_obj\inithelp.obj
build\intel\st_obj\initctyp.obj
build\intel\st_obj\initcoll.obj
build\intel\st_obj\getqloc.obj
build\intel\st_obj\getpath.obj
build\intel\st_obj\getenv.obj
build\intel\st_obj\errmode.obj
build\intel\st_obj\dbgrpt.obj
build\intel\st_obj\dbgnew.obj
build\intel\st_obj\dbgdel.obj
build\intel\st_obj\dbghook.obj
build\intel\st_obj\dbgheap.obj
build\intel\st_obj\div.obj
build\intel\st_obj\ctype.obj
build\intel\st_obj\crtmbox.obj
build\intel\st_obj\cmiscdat.obj
build\intel\st_obj\charmax.obj
build\intel\st_obj\bsearch.obj
build\intel\st_obj\aw_com.obj
build\intel\st_obj\assert.obj
build\intel\st_obj\abs.obj
build\intel\st_obj\abort.obj
build\intel\st_obj\a_str.obj
build\intel\st_obj\a_map.obj
build\intel\st_obj\a_loc.obj
build\intel\st_obj\a_env.obj
build\intel\st_obj\a_cmp.obj
build\intel\st_obj\setjmpex.obj
build\intel\st_obj\setjmp3.obj
build\intel\st_obj\setjmp.obj
build\intel\st_obj\sehsupp.obj
build\intel\st_obj\longjmp.obj
build\intel\st_obj\exsup3.obj
build\intel\st_obj\exsup2.obj
build\intel\st_obj\exsup.obj
build\intel\st_obj\chkesp.obj
build\intel\st_obj\tombbmbc.obj
build\intel\st_obj\tojisjms.obj
build\intel\st_obj\mbtoupr.obj
build\intel\st_obj\mbtolwr.obj
build\intel\st_obj\mbtokata.obj
build\intel\st_obj\mbtohira.obj
build\intel\st_obj\mbsupr.obj
build\intel\st_obj\mbstok.obj
build\intel\st_obj\mbsstr.obj
build\intel\st_obj\mbsspnp.obj
build\intel\st_obj\mbsspn.obj
build\intel\st_obj\mbsset.obj
build\intel\st_obj\mbsrev.obj
build\intel\st_obj\mbsrchr.obj
build\intel\st_obj\mbspbrk.obj
build\intel\st_obj\mbsnset.obj
build\intel\st_obj\mbsninc.obj
build\intel\st_obj\mbsnicol.obj
build\intel\st_obj\mbsnicmp.obj
build\intel\st_obj\mbsnextc.obj
build\intel\st_obj\mbsncpy.obj
build\intel\st_obj\mbsncoll.obj
build\intel\st_obj\mbsncmp.obj
build\intel\st_obj\mbsnccnt.obj
build\intel\st_obj\mbsncat.obj
build\intel\st_obj\mbsnbset.obj
build\intel\st_obj\mbsnbico.obj
build\intel\st_obj\mbsnbicm.obj
build\intel\st_obj\mbsnbcpy.obj
build\intel\st_obj\mbsnbcol.obj
build\intel\st_obj\mbsnbcnt.obj
build\intel\st_obj\mbsnbcmp.obj
build\intel\st_obj\mbsnbcat.obj
build\intel\st_obj\mbslwr.obj
build\intel\st_obj\mbslen.obj
build\intel\st_obj\mbsinc.obj
build\intel\st_obj\mbsicoll.obj
build\intel\st_obj\mbsicmp.obj
build\intel\st_obj\mbsdec.obj
build\intel\st_obj\mbscspn.obj
build\intel\st_obj\mbscoll.obj
build\intel\st_obj\mbscmp.obj
build\intel\st_obj\mbschr.obj
build\intel\st_obj\mbsbtype.obj
build\intel\st_obj\mbctype.obj
build\intel\st_obj\mbclevel.obj
build\intel\st_obj\mbclen.obj
build\intel\st_obj\mbccpy.obj
build\intel\st_obj\mbbtype.obj
build\intel\st_obj\ismbupr.obj
build\intel\st_obj\ismbstr.obj
build\intel\st_obj\ismbspc.obj
build\intel\st_obj\ismbsle.obj
build\intel\st_obj\ismbpunc.obj
build\intel\st_obj\ismbprn.obj
build\intel\st_obj\ismblwr.obj
build\intel\st_obj\ismblgl.obj
build\intel\st_obj\ismbknj.obj
build\intel\st_obj\ismbgrph.obj
build\intel\st_obj\ismbdgt.obj
build\intel\st_obj\ismbbyte.obj
build\intel\st_obj\ismbalph.obj
build\intel\st_obj\ismbalnm.obj
build\intel\st_obj\mbsdup.obj
build\intel\st_obj\mbscat.obj
build\intel\st_obj\wopen.obj
build\intel\st_obj\outp.obj
build\intel\st_obj\inp.obj
build\intel\st_obj\wmktemp.obj
build\intel\st_obj\wcreat.obj
build\intel\st_obj\putch.obj
build\intel\st_obj\getch.obj
build\intel\st_obj\cputs.obj
build\intel\st_obj\cgets.obj
build\intel\st_obj\write.obj
build\intel\st_obj\txtmode.obj
build\intel\st_obj\telli64.obj
build\intel\st_obj\tell.obj
build\intel\st_obj\setmode.obj
build\intel\st_obj\read.obj
build\intel\st_obj\pipe.obj
build\intel\st_obj\osfinfo.obj
build\intel\st_obj\open.obj
build\intel\st_obj\mktemp.obj
build\intel\st_obj\lseeki64.obj
build\intel\st_obj\lseek.obj
build\intel\st_obj\locking.obj
build\intel\st_obj\isatty.obj
build\intel\st_obj\ioinit.obj
build\intel\st_obj\initcon.obj
build\intel\st_obj\fstati64.obj
build\intel\st_obj\fstat.obj
build\intel\st_obj\fleni64.obj
build\intel\st_obj\flength.obj
build\intel\st_obj\eof.obj
build\intel\st_obj\dup2.obj
build\intel\st_obj\dup.obj
build\intel\st_obj\creat.obj
build\intel\st_obj\commit.obj
build\intel\st_obj\close.obj
build\intel\st_obj\chsize.obj
build\intel\st_obj\ullshr.obj
build\intel\st_obj\ullrem.obj
build\intel\st_obj\ulldiv.obj
build\intel\st_obj\llshr.obj
build\intel\st_obj\llshl.obj
build\intel\st_obj\llrem.obj
build\intel\st_obj\llmul.obj
build\intel\st_obj\lldiv.obj
build\intel\st_obj\new.obj
build\intel\st_obj\_newmode.obj
build\intel\st_obj\delete.obj
build\intel\st_obj\new_mode.obj
build\intel\st_obj\setnewh.obj
build\intel\st_obj\handler.obj
build\intel\st_obj\sbheap.obj
build\intel\st_obj\realloc.obj
build\intel\st_obj\msize.obj
build\intel\st_obj\malloc.obj
build\intel\st_obj\heapwalk.obj
build\intel\st_obj\heapused.obj
build\intel\st_obj\hpabort.obj
build\intel\st_obj\heapmin.obj
build\intel\st_obj\heapinit.obj
build\intel\st_obj\heapchk.obj
build\intel\st_obj\heapadd.obj
build\intel\st_obj\free.obj
build\intel\st_obj\expand.obj
build\intel\st_obj\calloc.obj
build\intel\st_obj\align.obj
build\intel\st_obj\wsystem.obj
build\intel\st_obj\wspwnvpe.obj
build\intel\st_obj\wspawnvp.obj
build\intel\st_obj\wspawnve.obj
build\intel\st_obj\wspawnv.obj
build\intel\st_obj\wspwnlpe.obj
build\intel\st_obj\wspawnlp.obj
build\intel\st_obj\wspawnle.obj
build\intel\st_obj\wspawnl.obj
build\intel\st_obj\wexecvpe.obj
build\intel\st_obj\wexecvp.obj
build\intel\st_obj\wexecve.obj
build\intel\st_obj\wexecv.obj
build\intel\st_obj\wexeclpe.obj
build\intel\st_obj\wexeclp.obj
build\intel\st_obj\wexecle.obj
build\intel\st_obj\wexecl.obj
build\intel\st_obj\wdospawn.obj
build\intel\st_obj\wcenvarg.obj
build\intel\st_obj\wait.obj
build\intel\st_obj\system.obj
build\intel\st_obj\spawnvpe.obj
build\intel\st_obj\spawnvp.obj
build\intel\st_obj\spawnve.obj
build\intel\st_obj\spawnv.obj
build\intel\st_obj\spawnlpe.obj
build\intel\st_obj\spawnlp.obj
build\intel\st_obj\spawnle.obj
build\intel\st_obj\spawnl.obj
build\intel\st_obj\loaddll.obj
build\intel\st_obj\getproc.obj
build\intel\st_obj\execvpe.obj
build\intel\st_obj\execvp.obj
build\intel\st_obj\execve.obj
build\intel\st_obj\execv.obj
build\intel\st_obj\execlpe.obj
build\intel\st_obj\execlp.obj
build\intel\st_obj\execle.obj
build\intel\st_obj\execl.obj
build\intel\st_obj\dospawn.obj
build\intel\st_obj\fileinfo.obj
build\intel\st_obj\cenvarg.obj
build\intel\st_obj\typname.obj
build\intel\st_obj\typinfo.obj
build\intel\st_obj\stdexcpt.obj
build\intel\st_obj\rtti.obj
build\intel\st_obj\undname.obj
build\intel\st_obj\ehvecdtr.obj
build\intel\st_obj\ehveccvb.obj
build\intel\st_obj\ehvecctr.obj
build\intel\st_obj\validate.obj
build\intel\st_obj\user.obj
build\intel\st_obj\unhandld.obj
build\intel\st_obj\throw.obj
build\intel\st_obj\hooks.obj
build\intel\st_obj\frame.obj
build\intel\st_obj\ehprolog2.obj
build\intel\st_obj\ehprolog.obj
build\intel\st_obj\lowhelpr.obj
build\intel\st_obj\trnsctrl.obj
build\intel\st_obj\wunlink.obj
build\intel\st_obj\wstati64.obj
build\intel\st_obj\wstat.obj
build\intel\st_obj\wrmdir.obj
build\intel\st_obj\wrename.obj
build\intel\st_obj\wmkdir.obj
build\intel\st_obj\wgetcwd.obj
build\intel\st_obj\wfullpat.obj
build\intel\st_obj\wchmod.obj
build\intel\st_obj\wchdir.obj
build\intel\st_obj\waccess.obj
build\intel\st_obj\unlink.obj
build\intel\st_obj\stati64.obj
build\intel\st_obj\stat.obj
build\intel\st_obj\rmdir.obj
build\intel\st_obj\rename.obj
build\intel\st_obj\mterrno.obj
build\intel\st_obj\mkdir.obj
build\intel\st_obj\getpid.obj
build\intel\st_obj\getcwd.obj
build\intel\st_obj\fullpath.obj
build\intel\st_obj\drive.obj
build\intel\st_obj\dosmap.obj
build\intel\st_obj\chdir.obj
build\intel\st_obj\chmod.obj
build\intel\st_obj\access.obj
build\intel\st_obj\wfndfi64.obj
build\intel\st_obj\wfindfil.obj
build\intel\st_obj\enable.obj
build\intel\st_obj\slbeep.obj
build\intel\st_obj\seterrm.obj
build\intel\st_obj\findfi64.obj
build\intel\st_obj\findfile.obj
build\intel\st_obj\drivfree.obj
build\intel\st_obj\drivemap.obj
build\intel\st_obj\xtow.obj
build\intel\st_obj\xtoa.obj
build\intel\st_obj\wtox.obj
build\intel\st_obj\wctomb.obj
build\intel\st_obj\wcstombs.obj
build\intel\st_obj\wcstol.obj
build\intel\st_obj\wcstod.obj
build\intel\st_obj\towupper.obj
build\intel\st_obj\towlower.obj
build\intel\st_obj\toupper.obj
build\intel\st_obj\tolower.obj
build\intel\st_obj\swab.obj
build\intel\st_obj\strtol.obj
build\intel\st_obj\strtod.obj
build\intel\st_obj\mbtowc.obj
build\intel\st_obj\mbstowcs.obj
build\intel\st_obj\mblen.obj
build\intel\st_obj\iswctype.obj
build\intel\st_obj\isctype.obj
build\intel\st_obj\gcvt.obj
build\intel\st_obj\fcvt.obj
build\intel\st_obj\atox.obj
build\intel\st_obj\atof.obj
build\intel\st_obj\_wctype.obj
build\intel\st_obj\_mbslen.obj
build\intel\st_obj\_fptostr.obj
build\intel\st_obj\_ctype.obj

从这里也可以看出,所有合在里面的obj文件,都是在/build/intel/st_obj/目录下面的。也就验证了libc.lib是给单线程静态库使用的说法。

另外,使用lib命令还可以将需要的obj文件从lib文件中分离出来。这里解压的时候,最好是先将lib文件拷贝到一个临时目录下,不要放在VC原来的lib目录下操作。我这里放在d:\test目录进行。目标是解出一个crt0.obj文件。

D:\test>lib /EXTRACT:build\intel\st_obj\crt0.obj libc.lib
Microsoft (R) Library Manager Version 6.00.8447
Copyright (C) Microsoft Corp 1992-1998. All rights reserved.

之后,就可以用dumpbin来观察解出来的obj文件了。

D:\test>dumpbin crt0.obj
Microsoft (R) COFF Binary File Dumper Version 6.00.8447
Copyright (C) Microsoft Corp 1992-1998. All rights reserved.

Dump of file crt0.obj

File Type: COFF OBJECT

  Summary

           C .bss
           8 .data
          20 .debug$F
           C .rdata
         128 .text

这里使用/all选项出来的内容过多,大家可以自己去看输出,这里就不贴出来了。只是提供一个思路和方法。

另外,使用dumpbin命令,还可以看到lib文件中的函数,具体可以用linkermember选项。

D:\test>dumpbin /linkermember libc.lib>func.log

同样因为内容过多,大家还是自己去看,可以找一下_mainCRTStartup。

注意:

第8行,第1850行,第4334行有一个分隔。

posted on 2011-06-21 16:14  cnyao  阅读(3317)  评论(4编辑  收藏  举报