ÉèΪÊ×Ò³ ¼ÓÈëÊÕ²Ø

TOP

ѧϰwindows±à³Ì(4)--´Ólibc.lib¿ªÊ¼(Ò»)
2014-11-23 22:13:21 À´Ô´: ×÷Õß: ¡¾´ó ÖРС¡¿ ä¯ÀÀ:2´Î
Tags£ºÑ§Ï° windows ±à³Ì libc.lib ¿ªÊ¼

ÂÒÏëÂÒд·ÉÎèÖ®¿Õ¼ä
´ÓÁ㿪ʼ£¬Ñ§Ï°windows±à³Ì(4)--´Ólibc.lib¿ªÊ¼
´ÓÉÏһƪÎÄÕÂÖУ¬´ó¼ÒÒѾ­Á˽⵽ÓÐCÔËÐÐʱ¿âÕâ¸ö¸ÅÄÕâ¸ö²»ËãÊÇж«Î÷£¬µ«ÊÇÒ»°ã¶¼Òþ²ØÔÚÄ»ºó£¬C/C++ÓïÑÔ½ÌѧµÄʱºò²»½²£¬windows/linux±à³ÌµÄʱºòËÆºõÒ²²»»áרÃŽ²µ½¡£²»¹ýËüÒ»°ãÊÇÎÒÃÇC/C++±à³ÌÖÐĬÈÏ»áʹÓõÄÒ»¸öÖØÒª²¿·Ö¡£»ØÏëÏ룬ÎÒÃÇËæÊÖ´ò³öµÄstrcpy, memset, memcpyµÈµÈ£¬²»¾ÍÊÇCÔËÐÐʱ¿âËùÌṩ³öÀ´µÄ¶«Î÷Âð£¿

¼ÈÈ»ÕâÑù£¬¾ÍÒªºÃºÃÑо¿Ò»ÏÂÕâ¸ö¶«Î÷ÁË¡£

Ç°ÃæÒѾ­Ëµ¹ý£¬Õë¶Ôµ¥Ïß³Ì/¶àỊ̈߳¬¾²Ì¬/¶¯Ì¬Á´½Ó£¬ÊÇ·ñÊÇdebug°æ±¾£¬VC6µÄCÔËÐÐʱ¿âÌṩÁË6¸ö°æ±¾¡£¾ßÌå¿ÉÒÔ¿´ÏÂÃæµÄ½ØÍ¼¡£

image

¶øÆäÖÐÿһ¸öÑ¡Ôñ¶ÔÓ¦µÄLIBÎļþ£¬ÔÚÉÏһƪÖÐÒѾ­ÓÐÒ»¸öÁбí½éÉÜÁË£¬ÕâÀï¾Í²»Öظ´Ð´ÁË¡£ÕâÀïÒ²²»È«²¿Ò»ÏÂ×Ó½«ËùÓеͼÑо¿Ò»Ï£¬»¹Êǰ´ÕÕÓÉdzÈëÉîµÄÔ­Ôò£¬´Ó×î¼òµ¥µÄ²¿·Ö¿ªÊ¼£¬µ±È»£¬Ò²»áÔÚÇ£Éæµ½ÆäËû²¿·ÖµÄʱºò£¬½øÐÐÒ»¶¨µÄ˵Ã÷¡£

×î¼òµ¥µÄµ±È»ÊÇSingle-Threaded£¬Í¬Ê±Ò²ÊÇstatic linkµÄÁË¡£Æä¶ÔÓ¦µÄÎļþΪLIBC.LIB¡£¶ÔÓ¦CLµÄ±àÒëÑ¡ÏîΪ/ML¡£

¼ÈȻҪÑо¿Õâ¸öLIBÎļþ£¬Äǵ±È»ÊÇÓÐÔ´Âë×îºÃÁË£¬jjhou²»ÊÇ˵¹ý£¬¡°Ô´ÂëÃæÇ°£¬ÁËÎÞÃØÃÜ¡±Âð¡£ÄÇÎÒÃÇÔÚÄÄÀïÕÒµ½ÓÐÔ´ÂëÄØ£¿

Ö»ÒªÄã°²×°ÁËVC6£¬Ëü¾Í´øÓÐCRTµÄÔ´Â룬¾ßÌåĿ¼ºÍÄã°²×°VC6µÄĿ¼Óйأ¬ÔÚÎÒµçÄÔÉϵÄ·¾¶Îª¡°d:Program FilesMicrosoft Visual StudioVC98CRTSRC¡±£¬Äã½øÈ¥Ö®ºó»á·¢ÏÖ£¬ÀïÃæÓв»ÉÙÊìϤµÄÃû×Ö£¬Èç¡°MATH.H¡±¡¢¡°STDIO.H¡±¡¢¡°STDLIB.H¡±¡¢¡°STRING.H¡±µÈ£¬ÓÉÓÚCÔËÐÐʱ¿â±»C++ÔËÐÐʱ¿â°üº¬£¬ËùÒÔÕâÀïÃæ»¹ÓÐC++±ê×¼¿âµÄ´úÂ룬ËùÒÔ»¹ÄÜ¿´µ½¡°IOSTREAM¡±¡¢¡°CSTDIO¡±¡¢¡°algorithm¡±µÈC++µÄstdÍ·Îļþ¡£

ÕâÀï¾Í³öÏÖÁËÒ»¸öÎÊÌ⣬ÕâÀïµÄÎļþÓгɰÙÉÏǧ¸ö£¬ÎÒÃÇÒ»¸ö¸öÈ«²¿¿´ÊDz»¿ÉÄܵģ¬ÄÇÈçºÎÕÒ³ö¹Ø¼üµÄ²¿·ÖÀ´ÄØ£¿

Èç¹û»¹¶ÔÉÏһƪµÄ·ÖÎöÓÐÓ¡Ï󣬲¢ÇÒ´øÓÐÎÊÌâµÄͬѧ£¬Ó¦¸ÃºÜÈÝÒ×ÁªÏëµ½£¬ÎÒÃÇÔÚlink²»´øÓÐdefaultlibsÐÅÏ¢µÄhello.objÎļþʱ£¬³öÏÖÁËÁ½¸öLINK2001´íÎ󣬷ֱðÊÇÕÒ²»µ½_printfºÍ_mainCRTStartupÕâÁ½¸ösymbolÎļþ¡£

±àÒëÆ÷CLÔÚ±àÒëC³ÌÐòµÄʱºò£¬ÄÚ²¿½«ÐèÒª±àÒëµÄº¯ÊýÇ°Ãæ¼ÓÉÏÏ»®Ïß(_)ÓÃÀ´±êʶ£¬_printf¾ßÌåÖ¸µÄ¾ÍÊÇprintfº¯Êý£¬_mainCRTStartupÔòÊÇmainCRTStartup£¬ÊÇÔÚÄÄÀïʹÓõÄÄØ£¿

ÎÒÃÇÒѾ­ÖªµÀ£¬printfº¯ÊýºÍmainCRTStartupº¯ÊýµÄʵÏÖ¶¼ÊÇÔÚLIBC.LIBÖУ¬printf£¬ÊÇÎÒÃÇmainº¯ÊýÖÐÓÃÀ´´òÓ¡ÐÅÏ¢µÄ£¬¶ømainCRTStartup£¬ÔòÊÇhello.exeµÄÈë¿Ú(entry point)¡£

Èë¿Ú

ѧ¹ýCÓïÑÔµÄÈ˶¼ÖªµÀ£¬ÓÐÒ»¸ömainº¯Êý£¬ÊÇÒ»¸ö³ÌÐòµÄÈë¿Ú¡£²»¹ÜÔõÑù£¬mainº¯ÊýÊÇÌØÊâµÄ¡£ÔÚTCPL (¡°The C programming Language¡± by K&R) µÄ1.1Õ½ڣ¬½éÉÜHello WorldµÄʱºò˵µÄÒ»¶Î»°£º

Now, for some explanations about the program itself. A C program, whatever its size, consists of functions and variables. A function contains statements that specify the computing operations to be done, and variables store values used during the computation. C functions are like the subroutines and functions in Fortran or the procedures and functions of Pascal. Our example is a function named main. Normally you are at liberty to give functions whatever names you like, but ¡°main¡± is special - your program begins executing at the beginning of main. This means that every program must have a main somewhere.

ÒòΪÕâÒ»¶Î»°£¬ÒòΪÕâ±¾ÊéµÄ¾­µä£¬ºÜ¶àÈ˰üÀ¨ÎÒ˼·¶¼ºÜÄÑת±ä¡£Ò»Ö±¶¼ÈÏΪmain¾ÍÊÇC³ÌÐòµÄÈë¿Úº¯Êý¡£²»¹ý£¬ÕæµÄÊÇÕâÑùÂð£¿

ʹÓûã±àµÄͯЬ¶¼ÖªµÀ£¬»ã±àµÄÈë¿Úº¯ÊýÖ»ÊÇÒ»¸ö·ûºÅ£¬ÊÇ¿ÉÒÔËæÒⶨÒåµÄ£¬Ö®ºó¾Í´ÓÈë¿Ú¿ªÊ¼£¬PCÒ»ÌõÌõµÄ¿ªÊ¼Ö´Ðлã±à´úÂë¡£¶ÔÓÚC³ÌÐòÀ´Ëµ£¬mainÒ²ÊÇÒ»¸ö·ûºÅ¶øÒÑ£¬²»¹ýÕâ¸ö·ûºÅÓë»ã±àµÄ_startÓÐÐ©Çø±ð£¬_start¿ÉÒÔÓÃÆäËû·ûºÅÖ±½Ó´úÌæ£¬¶øÔÚwindowsϵͳÏ£¬VC¿ª·¢µÄ»·¾³ÖУ¬ÎÒÃǵÄhello.exeµÄmainº¯Êý֮ǰ»¹ÓÐÒ»¸ömainCRTStartup£¨ºô£¬ºÃ¶àÏÞÖÆÌõ¼þ£¬ºÃÈÆ¿Ú¡­¡­£©¡£

crt0.c

ΪʲôÐèÒªmainCRTStartupÄØ£¬ÎÒÃÇ»¹ÊÇÒª¿´Ò»ÏÂÔ´ÂëʵÏÖ¡£ÏÈËÑË÷µ½mainCRTStartupËùÔÚµÄÎļþ£¬Îªcrt0.c£¬ÆäÈ«²¿´úÂëÈçÏ£º

show sourceview sourceprint 001 /***

002 *crt0.c - C runtime initialization routine

003 *

004 * Copyright (c) 1989-1997, Microsoft Corporation. All rights reserved.

005 *

006 *Purpose:

007 * This the actual startup routine for apps. It calls the users main

008 * routine [w]main() or [w]WinMain after performing C Run-Time Library

009 * initialization.

010 *

011 * (With ifdefs, this source file also provides the source code for

012 * wcrt0.c, the startup routine for console apps with wide characters,

013 * wincrt0.c, the startup routine for Windows apps, and wwincrt0.c,

014 * the startup routine for Windows apps with wide characters.)

015 *

016 *******************************************************************************/

017

018 #ifdef _WIN32

019

020 #ifndef CRTDLL

021

022 #include

023 #include

024 #include

025 #include

026 #include

027 #include

028 #includ

Ê×Ò³ ÉÏÒ»Ò³ 1 2 ÏÂÒ»Ò³ βҳ 1/2/2
¡¾´ó ÖРС¡¿¡¾´òÓ¡¡¿ ¡¾·±Ìå¡¿¡¾Í¶¸å¡¿¡¾Êղء¿ ¡¾ÍƼö¡¿¡¾¾Ù±¨¡¿¡¾ÆÀÂÛ¡¿ ¡¾¹Ø±Õ¡¿ ¡¾·µ»Ø¶¥²¿¡¿
·ÖÏíµ½: 
ÉÏһƪ£ºÒ»¸ö±à³ÌÓÎÏ·Ö®Îı¾´¦Àí(ÒªÇó×î¶Ì.. ÏÂһƪ£ºÑ§Ï°windows±à³Ì£¨3£©¨Dhello.cµ..

ÆÀÂÛ

ÕÊ¡¡¡¡ºÅ: ÃÜÂë: (ÐÂÓû§×¢²á)
Ñé Ö¤ Âë:
±í¡¡¡¡Çé:
ÄÚ¡¡¡¡ÈÝ: