linux ¶¯Ì¬Á´½Ó¿â¼ÓÔØ
Linux ¶¯Ì¬Á´½Ó
Linux ÖеÄÓ¦ÓóÌÐòÒÔÒÔÏÂÁ½ÖÖ·½Ê½Ö®Ò»Á´½Óµ½Íⲿº¯Êý£ºÒªÃ´ÔÚ¹¹½¨Ê±Ó뾲̬¿â£¨ lib*.a £© ¾²Ì¬µØÁ´½Ó£¬²¢ÇÒ½«¿â´úÂë°üº¬ÔÚ¸ÃÓ¦ÓóÌÐòµÄ¿ÉÖ´ÐÐÎļþÀҪôÔÚÔËÐÐʱÓë¹²Ïí¿â£¨ lib*.so £© ¶¯Ì¬µØÁ´½Ó¡£Í¨¹ý¶¯Ì¬Á´½Ó×°ÈëÆ÷£¬½«¶¯Ì¬¿âÓ³Éä½øÓ¦ÓóÌÐòµÄ¿ÉÖ´ÐÐÄÚ´æÖС£ÔÚÆô¶¯Ó¦ÓóÌÐò֮ǰ£¬¶¯Ì¬Á´½Ó×°ÈëÆ÷½«ËùÐèµÄ¹²ÏíÄ¿±ê¿âÓ³Éäµ½Ó¦ÓóÌÐòµÄÄڴ棬»òÕßʹÓÃϵͳ¹²ÏíµÄÄ¿±ê²¢ÎªÓ¦ÓóÌÐò½âÎöËùÐèµÄÍⲿÒýÓá£ÏÖÔÚÓ¦ÓóÌÐò¾Í¿ÉÒÔÔËÐÐÁË¡£
×÷ΪʾÀý£¬ÏÂÃæÓÐÒ»¸öÑÝʾ Linux ÖжԶ¯Ì¬Á´½Ó¿âµÄȱʡʹÓõÄС³ÌÐò£º
main()
{
printf("Hello world
");
}
µ±Ê¹Óà gcc ±àÒë hello.c ʱ£¬¾Í´´½¨ÁËÒ»¸öÃûΪ a.out µÄ¿ÉÖ´ÐÐÎļþ¡£Í¨¹ýʹÓà Linux ÃüÁî ldd a.out £¨¸ÃÃüÁî´òÓ¡³ö¹²Ïí¿âµÄÏ໥ÒÀÀµÐÔ£©£¬¿ÉÒÔ¿´³öËùÐèµÄ¹²Ïí¿âÊÇ£º
libc.so.6 => /lib/libc.so.6 (0x4001d000)
/lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x40000000)
ʹÓÃÏàͬµÄ¶¯Ì¬Á´½Ó×°ÈëÆ÷ÔÚÓ¦ÓóÌÐòÔËÐÐÖ®ºó½« dll Ó³Éä½øÓ¦ÓóÌÐòµÄÄڴ档ͨ¹ýʹÓà Linux ¶¯Ì¬×°ÈëÆ÷Àý³Ì£¬Ó¦ÓóÌÐò¿ØÖÆ×°ÈëÄÄÒ»¸ö¶¯Ì¬¿âÒÔ¼°µ÷ÓÿâÖеÄÄÄÒ»¸öº¯Êý£¬ÒÔÖ´ÐÐ×°ÈëºÍÁ´½ÓÒÔ¼°·µ»ØËùÐèÈë¿ÚµãµÄµØÖ·¡£
»ØÒ³Ê×
Linux dll º¯Êý
Linux Ìṩ 4 ¸ö¿âº¯Êý£¨ dlopen , dlerror , dlsym ºÍ dlclose £©£¬Ò»¸ö include Îļþ£¨ dlfcn.h £©ÒÔ¼°Á½¸ö¹²Ïí¿â£¨¾²Ì¬¿â libdl.a ºÍ¶¯Ì¬¿â libdl.so £©£¬ÒÔÖ§³Ö¶¯Ì¬Á´½Ó×°ÈëÆ÷¡£ÕâЩ¿âº¯ÊýÊÇ:
dlopen ½«¹²ÏíÄ¿±êÎļþ´ò¿ª²¢ÇÒÓ³Éäµ½ÄÚ´æÖУ¬²¢ÇÒ·µ»Ø¾ä±ú
dlsym·µ»ØÒ»¸öÖ¸Ïò±»ÇëÇóÈë¿ÚµãµÄÖ¸Õë
dlerror ·µ»Ø NULL »òÕßÒ»¸öÖ¸ÏòÃèÊö×î½ü´íÎóµÄ ASCII ×Ö·û´®µÄÖ¸Õë
dlclose¹Ø±Õ¾ä±ú²¢ÇÒÈ¡Ïû¹²ÏíÄ¿±êÎļþµÄÓ³Éä
¶¯Ì¬Á´½Ó×°ÈëÆ÷Àý³Ì dlopen ÐèÒªÔÚÎļþϵͳÖвéÕÒ¹²ÏíÄ¿±êÎļþÒÔ´ò¿ªÎļþ²¢´´½¨¾ä±ú¡£ÓÐ 4 ÖÖ·½Ê½ÓÃÒÔÖ¸¶¨ÎļþµÄλÖãº
dlopen call Öеľø¶ÔÎļþ·¾¶
ÔÚ LD_LIBRARY_PATH »·¾³±äÁ¿ÖÐÖ¸¶¨µÄĿ¼ÖÐ
ÔÚ /etc/ld.so.cache ÖÐÖ¸¶¨µÄ¿âÁбíÖ®ÖÐ
ÏÈÔÚ /usr/lib Ö®ÖУ¬È»ºóÔÚ /lib Ö®ÖÐ
»ØÒ³Ê×
dll ʾÀý£ºÐ¡µÄ C ³ÌÐòºÍ dlTest
¶¯Ì¬Á´½Ó×°ÈëÆ÷ʾÀý³ÌÐòÊÇÒ»¸öСµÄ C ³ÌÐò£¬¸Ã³ÌÐò±»Éè¼ÆÓÃÀ´Á·Ï° dl Àý³Ì¡£¸Ã³ÌÐò»ùÓÚÿ¸öÈ˶¼±àд¹ýµÄÒ»¸ö C ³ÌÐò£¬Ëü½«“Hello World”´òÓ¡µ½¿ØÖÆÌ¨ÉÏ¡£×î³õ´òÓ¡µÄÏûÏ¢ÊÇ“HeLlO WoRlD”¡£¸Ã²âÊÔ³ÌÐòÁ´½Óµ½ÔٴδòÓ¡¸ÃÏûÏ¢µÄÁ½¸öº¯ÊýÉÏ£ºµÚÒ»´Î¶¼Óôóд×Ö·û£¬µÚ¶þ´Î¶¼Ó
Ïà¹ØÎĵµ£º
1.shell ÊÇϵͳµÄÓû§½çÃæ£¬ÌṩÁËÓû§ÓëÄں˽øÐн»»¥²Ù×÷µÄÒ»ÖÖ½Ó¿Ú£¨ÃüÁî½âÊÍÆ÷£©¡£Ëü½ÓÊÕÓû§ÊäÈëµÄÃüÁî²¢°ÑËüËÍÈëÄÚºËÈ¥Ö´ÐС£Æð
×Åе÷Óû§ÓëϵͳµÄÒ»ÖÂÐÔºÍÔÚÓû§Óëϵͳ֮¼ä½øÐн»»¥µÄ×÷Óá£
ShellÔÚLinuxϵͳÉϾßÓм«ÆäÖØÒªµÄµØÎ»
ShellµÄ°æ±¾£¬LinuxÓкܶàShell
echo $SHELL ²éѯ±¾ÏµÍ³µÄShell
m ......
selectϵͳµ÷ÓÃÊÇÓÃÀ´ÈÃÎÒÃǵijÌÐò¼àÊÓ¶à¸öÎļþ¾ä±ú(file descriptor)µÄ״̬±ä»¯µÄ¡£³ÌÐò»áÍ£ÔÚselectÕâÀïµÈ´ý£¬Ö±µ½±»¼àÊÓµÄÎļþ¾ä±úÓÐijһ¸ö»ò¶à¸ö·¢ÉúÁË״̬¸Ä±ä¡£
ÎļþÔÚ¾ä±úÔÚLinuxÀïºÜ¶à£¬Èç¹ûÄãmanij¸öº¯Êý£¬ÔÚº¯Êý·µ»ØÖµ²¿·Ö˵µ½³É¹¦ºóÓÐÒ»¸öÎļþ¾ä±ú±»´´½¨µÄ¶¼Êǵģ¬Èçman socket¿ÉÒÔ¿´µ½“On success, a fi ......
ѧϰ¹ý¡¶Èí¼þ¹¤³Ì¡·°É.Èí¼þ¹¤³Ì¿ÉÊÇÿһ¸ö³ÌÐòÔ±"±ØÐÞ"µÄ¿Î³Ì°¡.Èç¹ûÄãûÓÐѧϰ¹ý, ½¨ÒéÄãÈ¥¿´Ò»¿´. ÔÚÕâÒ»ÕÂÀïÃæ,ÎÒÃÇÒ»ÆðÀ´´ÓÈí¼þ¹¤³ÌµÄ½Ç¶ÈÑ§Ï°ÍøÂç±à³ÌµÄ˼Ïë.ÔÚÎÒÃÇд³ÌÐò֮ǰ, ÎÒÃǶ¼Ó¦¸Ã´ÓÈí¼þ¹¤³ÌµÄ½Ç¶È¹æ»®ºÃÎÒÃǵÄÈí¼þ,ÕâÑùÎÒÃÇ¿ª·¢Èí¼þµÄЧÂʲŻá¸ß. ÔÚÍøÂç³ÌÐòÀïÃæ,Ò»°ãµÄÀ´Ëµ¶¼ÊÇÐí ......
¸öµäÐ͵Ä×ÀÃæLinuxϵͳ°üÀ¨3¸öÖ÷ÒªµÄÈí¼þ²ã---linuxÄںˡ¢C¿âºÍÓ¦ÓóÌÐò´úÂë¡£
¡¡¡¡ÄÚºËÊÇΨһ¿ÉÒÔÍêÈ«¿ØÖÆÓ²¼þµÄ²ã£¬ÄÚºËÇý¶¯³ÌÐò´ú±íÓ¦ÓóÌÐòÓëÓ²¼þÖ®¼ä½øÐлỰ¡£ÄÚºËÖ®ÉÏÊÇC¿â£¬¸ºÔð°ÑPOSIX APIת»»ÎªÄں˿ÉÒÔʶ±ðµÄÐÎʽ£¬È»ºóµ÷ÓÃÄںˣ¬´ÓÓ¦ÓóÌÐòÏòÄں˴«µÝ²ÎÊý¡£Ó¦ÓóÌÐòÒÀ¿¿Çý¶¯ÄÚºËÀ´Íê³ÉÌØ¶¨µÄÈÎÎñ¡£
¡¡¡¡ÔÚÉ ......
²é¿´µ±Ç°Ä¿Â¼ÏÂÎļþµÄ¸öÊý
ls -l | grep "^-" | wc -l
²é¿´µ±Ç°Ä¿Â¼ÏÂÎļþµÄ¸öÊý£¬°üÀ¨×ÓĿ¼ÀïµÄ¡£
ls -lR| grep "^-" | wc -l
²é¿´Ä³Ä¿Â¼ÏÂÎļþ¼Ð£¨Ä¿Â¼£©µÄ¸öÊý£¬°üÀ¨×ÓĿ¼ÀïµÄ¡£
ls -lR| grep "^d" | wc -l
¼òҪ˵Ã÷£º
ls -l
³¤ÁбíÊä³ö¸ÃĿ¼ÏÂÎļþÐÅÏ¢(×¢ÒâÕâÀïµÄÎļþ£¬²»Í¬ÓÚÒ»°ãµÄÎļþ£¬¿ÉÄÜÊÇÄ ......