| ²é¿´: 1482 | »Ø¸´: 0 | |||
| µ±Ç°Ö÷ÌâÒѾ´æµµ¡£ | |||
yalefield½ð³æ (ÎÄ̳¾«Ó¢)
ÀϺºÒ»Ã¶
|
[½»Á÷]
[Ô´´]GNU CC (GCC)Óë¿âÎļþµÄ¼òҪ˵Ã÷
|
||
|
Ò»¡¢¿âÎļþ¼ò½é ¼òµ¥µØËµ£¬¿â£¨Library£©¾ÍÊÇÒ»×éÒѾдºÃÁ˵ĺ¯ÊýºÍ±äÁ¿¡¢¾¹ý±àÒë´úÂ룬ÊÇΪÁËÄܹ»Ìá¸ß¿ª·¢Ð§ÂʺÍÔËÐÐЧÂʶøÉè¼ÆµÄ¡£¿â·ÖΪ¾²Ì¬¿â£¨Static Library£©ºÍ¹²Ïí¿â£¨Shared library£©Á½Àà¡£¾²Ì¬¿âÎļþµÄÀ©Õ¹ÃûÊÇ.a£¬¹²Ïí¿âÎļþµÄÀ©Õ¹ÃûÊÇ.so£¨ÔÚCYGWIN»·¾³Ï£¬·Ö±ð½Ð×ö.oºÍ.dll£©¡£¹²Ïí¿âÏÖÔÚ³£³£±»½Ð×ö¶¯Ì¬¿â£¬ÊÇÓÉÓںܶàÈ˽èÓÃÁËMS WindowsµÄDLL£¨Dynamic Linked Library£©Õâ¸ö´Ê¡£ £¨1£©¾²Ì¬¿â ¾²Ì¬ÊÇָÿ¸öÓõ½¸Ã¿âµÄÓ¦ÓóÌÐò¶¼ÓµÓÐÒ»·Ý×Ô¼ºµÄ¿â¿½±´£»Ó¦ÓóÌÐòÔËÐеÄʱºò£¬¼´Ê¹½«¿âɾ³ýҲûÓÐÎÊÌ⣬ÒòΪӦÓóÌÐò×Ô¼ºÒѾÓÐÁË×Ô¼ºµÄ¿½±´¡£ £¨2£©¹²Ïí¿â Ò»¸ö¹²Ïí¿âÓпÉÄܱ»¶à¸öËùÓÐÓ¦ÓóÌÐò¹²Ïí¡£Òò´Ë£¬¶Ôÿ¸öÓ¦ÓóÌÐòÀ´Ëµ£¬¼´Ê¹²»ÔÙʹÓÃij¸ö¹²Ïí¿â£¬Ò²²»Ó¦½«Æäɾ³ý¡£´ËÍ⣬ӦÓóÌÐòÐèÒªÕýÈ·µÄ»·¾³±äÁ¿ÉèÖã¨LD_LIBRARY_PATH£©£¬´Ó¶øÕÒµ½¹²Ïí¿âËùÔÚµÄλÖ㬷ñÔò£¬Ó¦ÓóÌÐòÔËÐÐʱ»á±¨¸æÕÒ²»µ½Õâ¸ö¿â¡£ ¶þ¡¢¹ØÓÚʹÓÿâµÄÎÊÌâ Èç¹û¿âÊÇÒѾ±àÒëºÃµÄ£¬ÄÇôÈçºÎÔÚ¿ª·¢¡¢ÔËÐÐÓ¦ÓóÌÐòʱʹÓÃÄØ£¿ Í·ÎļþºÍ¿âÎļþËùÔڵķ¾¶£¬±ØÐëͨ¹ýÊʵ±µÄ·½Ê½Í¨Öª¸ø±àÒëÆ÷¡¢Á´½ÓÆ÷ºÍÏà¹ØµÄÓ¦ÓóÌÐò¡£ ¶ÔÓÚ¾²Ì¬¿âÀ´Ëµ£¬Ö÷񻃾¼°¿ª·¢¹¤¾ß£¬Èçgcc¡£ÀýÈ磬ÓÃgcc±àÒë¡¢Á´½Óʱ£¬ÐèҪͨ¹ýÊʵ±µÄ·¾¶ÕÒµ½Í·ÎļþºÍ¾²Ì¬¿âÎļþ£»ÊµÏֵķ½·¨ÓÐÁ½ÖÖ£º gccµÄÃüÁîÐвÎÊý£¨-I, -L£© shellµÄ»·¾³±äÁ¿£¨C_INCLUDE_PATH, LIBRARY_PATH£© ¶ÔÓÚ¹²Ïí¿âÀ´Ëµ£¬³ÌÐòÔÚÔËÐÐʱ£¬Èç¹ûÓõ½Á˶¯Ì¬¿â£¬Ò²ÐèÒªÕÒµ½¶ÔÓ¦µÄ¶¯Ì¬¿âÎļþ£»ÊµÏֵķ½·¨£º shellµÄ»·¾³±äÁ¿£¨LD_LIBRARY_PATH£© 1£© gccÃüÁîÐвÎÊý£¨-I, -L£© ĬÈÏÇé¿öÏ£¬gcc»á×Ô¶¯ËÑË÷ÏÂÃæµÄ·¾¶£º ¶ÔÍ·Îļþ£º /usr/local/include/ /usr/include/ ¶Ô¿âÎļþ£º /usr/local/lib/ /usr/lib/ µ«ÊÇÓÉÓÚϵͳ¹ÜÀíÔ±¶Ôϵͳ°²×°Â·¾¶Óв»Í¬µÄÅäÖ㬻òÕß¶ÔÓÚÈç64λϵͳµÈÇé¿ö£¬ÉÏÊö·¾¶¶ÔÓÚһ̨¾ßÌåµÄ¼ÆËã»úÀ´Ëµ¿ÉÄܲ»Í¬¡£ Èç¹û¿ª·¢Õß»¹ÓÐ×Ô¼º¹¤³ÌËùÐèµÄÍ·ÎļþºÍ¿âÎļþ£¬¾ÍÒªÓÃgccµÄ-IºÍ-LÀ´Ö¸¶¨¶ÔÓ¦µÄ·¾¶¡£Èç¹ûÐèÒªÁ´½Ó¿â£¬»¹ÒªÓÃ-lÑ¡Ïî¡£ ÀýÈ磺Èç¹û¹¤³ÌÉæ¼°µ½GDBM£¨GNU DataBase Management£©°ü£¬ÐèÒªlibgdbm¿â£¬¶øÏµÍ³Öа²×°GDBMµÄ·¾¶ÊÇ£º Í·Îļþ£º/opt/gdbm-1.8.3/include ¿âÎļþ£º/opt/gdbm-1.8.3/lib/ ÄÇô£¬gccµÄÃüÁî²ÎÊýÊÇ£º $gcc ¡ -I/opt/gdbm-1.8.3/include -L/opt/gdbm-1.8.3/lib ¨Clgdbm ×¢Ò⣺Ϊ±£Ö¤¼æÈÝÐÔ£¬±ØÐë¼á¾ö¶Å¾øÔÚC/C++Ô´ÎļþµÄ#includeÓï¾äÖлòÕ߯äËûÏà¹ØÓï¾äÖÐʹÓÃÉÏÊö·¾¶¡£ 2£© shell»·¾³±äÁ¿£¨Environmental Variable£© ³ýÁËÓÃÃüÁîÐвÎÊý£¬»¹¿ÉÒÔÓû·¾³±äÁ¿À´Ö¸Ê¾gccËÑË÷Êʵ±µÄ·¾¶¡£¶øÓÉÓÚShellµÄ²»Í¬£¬»·¾³±äÁ¿µÄÉèÖ÷½·¨Ò²²»Í¬¡£³£ÓõÄShellÓÐBash, CshºÍTcsh¡£ £¨1£©Bash ¶ÔÓÚBashÀ´Ëµ£¬³ýÁËÓÉϵͳ¹ÜÀíÔ±ÅäÖõÄÄÚÈÝÒÔÍ⣬ÿ¸öÓû§µÄÓû§Ä¿Â¼£¨$HOME£©Ï£¬ÓÐÒ»¸ö.bash_profileÎļþ¡£¿ÉÔÚ¸ÃÎļþÄÚ£¬Ôö¼ÓÏÂÃæµÄÁ½¸öÓï¾äÀ´ÉèÖÃGDBMÍ·Îļþ·¾¶µÄ»·¾³±äÁ¿£º C_INCLUDE_PATH=/opt/gdbm-1.8.3/include export C_INCLUDE_PATH ÀàËÆµØ£¬ÔÚ¸ÃÎļþÄÚÓÃÏÂÃæµÄÁ½¸öÓï¾äÀ´ÉèÖÿâÎļþ·¾¶µÄ»·¾³±äÁ¿£º LIBRARY_PATH=/opt/gdbm-1.8.3/lib export LIBRARY_PATH ÔÚ.bash_profileÖÐÓÐÁËÉÏÊöÓï¾äÒԺ󣬾Ͳ»ÓÃÔÙʹÓÃ-IºÍ-LÀ´ËÑË÷ÌØ¶¨°üµÄ·¾¶ÁË¡£µ«ÊÇÁ´½Ó¿âµÄʱºò£¬»¹ÊÇÒªÓÃ-lÑ¡Ïî¡£ $gcc ¡ ¨Clgdbm ÔÚBashÏ£¬Òª¼ì²éÓÐʲôÑùµÄ»·¾³±äÁ¿£¬¿ÉÓÃenvÃüÁî¡£ $env £¨2£©CshºÍTcsh Èç¹ûÊÇCsh»òTcsh£¬¶Ô»·¾³±äÁ¿µÄÉèÖ÷½·¨¾Í²»Í¬ÁË¡£ÔÚÓû§µÄ£¨$HOME£©Ä¿Â¼Ï£¬Ïà¹ØµÄһЩÎļþÈçÏ£º .cshrc ÿ´Î½øÈëCshʱµÄÆô¶¯(Startup)Îļþ .tcshrc ÿ´Î½øÈëTcshʱµÄÆô¶¯(Startup)Îļþ£¨ÔÚTcshÏ£¬Èç¹ûûÓÐÕâ¸öÎļþ£¬ÏµÍ³»áÓÃ.cshrcÎļþ´úÌæ£© .login ÿ´ÎµÇ¼ShellʱµÄÆô¶¯(Startup)Îļþ ÔÚCshºÍTcshÏ£¬·ÖΪShell±äÁ¿ºÍ»·¾³±äÁ¿£»Ç°ÕßÊÇÓÃÀ´ÉèÖÃShell±¾ÉíµÄ£¬¶øºóÕßÔòÊǹ©ÆäËû³ÌÐòʹÓõġ£Ò»°ãϰ¹ßÊÇ£ºShell±äÁ¿ÔÚ.cshrcÖж¨Ò壬¶ø»·¾³±äÁ¿ÔòÔÚ.loginÎļþÖж¨Òå¡£ ¶¨ÒåShell±äÁ¿µÄ·½·¨ÊÇÔÚ.cshrc»ò.tcshrcÖÐÓÃsetÓï¾ä£º set history = 20 ¶¨Òå»·¾³±äÁ¿µÄ·½·¨ÊÇÔÚ.loginÎļþÖÐÓÃsetenvÓï¾ä¡£¶ÔÓÚÉÏÃæ¹ØÓÚGDBMµÄÀý×Ó£º setenv C_INCLUDE_PATH /opt/gdbm-1.8.3/include setenv LIBRARY_PATH /opt/gdbm-1.8.3/lib ÔÚCshºÍTcshÏ£¬¿ÉÒÔÓÃsetenvÃüÁîÀ´²é¿´ÉèÖÃÁËÄÄЩ»·¾³±äÁ¿£¨Èç¹ûÒª¿´Shell±äÁ¿£¬ÒªÓÃsetÃüÁ¡£ ×¢Ò⣺ - ÉèÖÃShell±äÁ¿Ê±ÒªÓá°=¡±ºÅ£» - ÉèÖû·¾³±äÁ¿Ê±£¬±äÁ¿ÃûÓëʵ¼ÊÖµ£¨ÕâÀïÊÇÕæÊµÂ·¾¶£©Ö®¼äûÓС°=¡±ºÅ; - ²»ÐèÒªexport¡£ 3£© ʹÓù²Ïí¿â ʹÓù²Ïí¿âµÄÓ¦ÓóÌÐò£¬ÒªÍ¨¹ý»·¾³±äÁ¿LD_LIBRARY_PATHÕÒµ½¶ÔÓ¦µÄ¹²Ïí¿âÎļþ¡£ÓëÆäËû»·¾³±äÁ¿Ò»Ñù£¬¶ÔLD_LIBRARY_PATHÒ²Òª¸ù¾ÝshellµÄÖÖÀàºÍ¿âÎļþµÄʵ¼Ê·¾¶½øÐÐÉèÖᣵ«ÊÇ£¬±ØÐë×¢ÒâµÄÊÇ£¬ÓëÒ»°ãµÄ»·¾³±äÁ¿²»Í¬£¬LD_LIBRARY_PATHµÄÖµ£¬ÊÇÒѾ°²×°Á˵ÄËùÓй²Ïí¿âµÄ·¾¶£¬Òò´Ë£¬ÔÚBashÏ£¬²»Äܼòµ¥µØÓÃÏÂÃæµÄ°ì·¨£º LD_LIBRARY_PATH=/opt/gdbm-1.8.3/lib ´íÎó£¡ export LD_LIBRARY_PATH ¶ø±ØÐëÓ㺠LD_LIBRARY_PATH=/opt/gdbm-1.8.3/lib:$LD_LIBRARY_PATH export LD_LIBRARY_PATH ÕâÑù£¬¾Í°ÑÆäËû¹²Ïí¿âµÄ·¾¶Ò²Ò»Æð¼ÓÈë½øÀ´ÁË¡£Í¬ÑùµØ£¬ÔÚCshºÍTcshÏ£¬ setenv LD_LIBRARY_PATH /opt/gdbm-1.8.3/lib:$LD_LIBRARY_PATH Èý¡¢¹ØÓÚ¿âÉú³ÉµÄÎÊÌâ £¨1£©¾²Ì¬¿â ¼òµ¥µØËµ£¬¾²Ì¬¿âÊÇÒ»¸öÄ¿±êÎļþµÄ¼òµ¥¼¯ºÏ¡£Òò´Ë£¬Ê×ÏÈÒª½â¾öÄ¿±êÎļþ¡£ µÚÒ»²½£º½«¸÷º¯Êý´úÂëËùÔÚµÄÔ´Îļþ±àÒë³ÉĿ¼Îļþ¡£ ÀýÈ磬¶ÔÓÚmyfunc.c, myproc.c gcc -c myfunc.c myproc.c ½«µÃµ½myfunc.oºÍmyproc.o¡£ µÚ¶þ²½£ºÓÉar£¨archive£¬¹éµµµÄÒâ˼£©°Ñ¶à¸öÄ¿±êÎļþ¼¯ºÏÆðÀ´¡£ $ar -r libmyjob.a myfunc.o myproc.o ͨ³££¬¾²Ì¬¿âµÄÃüÃû·½Ê½Ó¦×ñÊØlibXXXXX.a¸ñʽ¡£Ó¦ÓóÌÐòÔÚʹÓþ²Ì¬¿âµÄʱºò£¬Í¨³£Ö»ÐèÒª°ÑÃüÃûÖеÄXXXXX²¿·Ö´«µÝ¸øgcc¼´¿É¡£ÀýÈ磺 $gcc ¨Co mywork ¨Clmyjob ¡ ÒâΪÈÃgcc£¨Êµ¼ÊÉÏÊÇgccµ÷ÓÃld£©È¥Á¬½ÓÒ»¸öÃû×ÖΪlibmyjob.a£¨»òÕßlibmyjob.so£©µÄ¿â¡£Èç¹û¿âµÄÃüÃû²»×ñÑlibXXXXX.aµÄ¸ñʽ¾ÍÕÒ²»µ½ÏàÓ¦Îļþ¡£ £¨2£©¹²Ïí¿â ¹²Ïí¿âµÄ¹¹Ô츴ÔÓһЩ£¬Í¨³£ÊÇÒ»¸öELF¸ñʽµÄÎļþ¡£¿ÉÒÔÓÐÈýÖÖ·½·¨Éú³É£º $ld -G $gcc -shared $libtool ÓÃld×ÔÓ£¬ÓÃgcc -share¾Í¼òµ¥µÄ¶à£¬µ«ÊÇ-share²¢·ÇÔÚÈÎºÎÆ½Ì¨¶¼¿ÉÒÔʹÓá£GNUÌṩÁËÒ»¸ö¸üºÃµÄ¹¤¾ßlibtool£¬×¨ÃÅÓÃÀ´ÔÚ¸÷ÖÖÆ½Ì¨ÉÏÉú³É¸÷ÖÖ¿â¡£ ÓÃgccµÄ-shared²ÎÊý£º gcc ¨Cshared ¨Co libmyjob.so myjob.o ÕâÑù£¬¾Íͨ¹ýmyjob.oÉú³ÉÁ˹²Ïí¿âÎļþlibmyjob.so¡£ ÌØ±ðµØ£¬ÔÚCYGWIN»·¾³Ï£¬ÈÔÐèÒªÊä³ö·ûºÏWindowsÃüÃûµÄ¹²Ïí¿â£¨¶¯Ì¬¿â£©£¬¼´libXXXXX.dll¡£È磺 gcc ¨Cshared ¨Co libmyjob.dll myjob.o £¨3£©¿âÉú³ÉÒÔºóµÄÅäÖà Èç¹ûÒª°Ñ×Ô¼º¿ª·¢µÄ¿âÎļþ°²×°µ½²Ù×÷ϵͳÖУ¬ÐèÒªÓйÜÀíԱȨÏÞ£º (a) °Ñ¿âÎļþ¸´ÖƵ½Êʵ±µÄĿ¼£º ¿ÉÒÔ°Ñ×Ô¼º¿ª·¢µÄ¶¯Ì¬Á¬½Ó¿â·Åµ½/usr/local/lib£¨»òÕß/usr/lib£©£¬»ò·Åµ½ÆäËûĿ¼£¬µ«²»ÂÛ·ÅÔÚÄÇÀ¶¼±ØÐëÓëLIBRARY_PATHµÄÖµ¡¢LD_LIBRARY_PATHµÄÖµÏàÒ»Ö¡£ (b) ÐÞ¸ÄÏà¹ØµÄϵͳÅäÖÃÎļþ£º ÐÞ¸Ä/etc/ld.so.conf£¬È»ºóÀûÓÃ/sbin/ldconfigÀ´Íê³É¡£ [È«ÎĽáÊø] |
» ²ÂÄãϲ»¶
ÃæÉϵÄË®ºÜÉî
ÒѾÓÐ18È˻ظ´
¹úÉç¿ÆÍ¨Ñ¶ÆÀÉó
ÒѾÓÐ5È˻ظ´
5¸ö%2F£¬·Ç¹Ì¶¨¶Î22¸ö×Öĸ
ÒѾÓÐ9È˻ظ´
ÉúÃü¿ÚC13ÃæÉÏ»áÆÀʱ¼ä
ÒѾÓÐ11È˻ظ´
ÄÚÐÄØÑ·¦
ÒѾÓÐ16È˻ظ´
ÉúÃü¿ÚÃæÉÏ»áÆÀ½áÊøÁËÂð´ó¼ÒÓÐÖªµÀ½á¹ûÂð£¿ÏÖÔÚ»¹Ã»Óнá¹ûÕý³£²»£¿
ÒѾÓÐ9È˻ظ´
ͶӢÎÄÆÚ¿¯ÈçºÎ²éÖØ
ÒѾÓÐ6È˻ظ´
²»ÒªÔÙÊý¹ú×ÔÈ»ÉêÇëÊéµÄ filecode µÄ·Ö¸ô·û¸öÊýÁË
ÒѾÓÐ21È˻ظ´
²®°·Éϼ׻ùÇóÖú
ÒѾÓÐ7È˻ظ´
¿ç³ö°æÉçÉÌͶ¸å
ÒѾÓÐ5È˻ظ´











»Ø¸´´ËÂ¥
10