Linuxѧϰ£¨¶þ).1(ת)
1. Íù/libºÍ/usr/libÀïÃæ¼Ó¶«Î÷£¬ÊDz»ÓÃÐÞ¸Ä/etc/ld.so.confµÄ£¬µ«ÊÇÍêÁËÖ®ºóÒªµ÷Ò»ÏÂldconfig£¬²»È»Õâ¸ölibrary»áÕÒ²»µ½
2. ÏëÍùÉÏÃæÁ½¸öĿ¼ÒÔÍâ¼Ó¶«Î÷µÄʱºò£¬Ò»¶¨ÒªÐÞ¸Ä/etc/ld.so.conf£¬È»ºóÔÙµ÷ÓÃldconfig£¬²»È»Ò²»áÕÒ²»µ½
±ÈÈç°²×°ÁËÒ»¸ömysqlµ½/usr/local/mysql£¬mysqlÓÐÒ»´ó¶ÑlibraryÔÚ/usr/local/mysql/libÏÂÃæ£¬Õâʱ¾ÍÐèÒªÔÚ/etc/ld.so.confÏÂÃæ¼ÓÒ»ÐÐ/usr/local/mysql/lib£¬±£´æ¹ýºóldconfigһϣ¬ÐµÄlibrary²ÅÄÜÔÚ³ÌÐòÔËÐÐʱ±»ÕÒµ½¡£
3. Èç¹ûÏëÔÚÕâÁ½¸öĿ¼ÒÔÍâ·Ålib£¬µ«ÊÇÓÖ²»ÏëÔÚ/etc/ld.so.confÖмӶ«Î÷£¨»òÕßÊÇûÓÐȨÏÞ¼Ó¶«Î÷£©¡£ÄÇÒ²¿ÉÒÔ£¬¾ÍÊÇexportÒ»¸öÈ«¾Ö±äÁ¿LD_LIBRARY_PATH£¬È»ºóÔËÐгÌÐòµÄʱºò¾Í»áÈ¥Õâ¸öĿ¼ÖÐÕÒlibrary¡£Ò»°ãÀ´½²ÕâÖ»ÊÇÒ»ÖÖÁÙʱµÄ½â¾ö·½°¸£¬ÔÚûÓÐȨÏÞ»òÁÙʱÐèÒªµÄʱºòʹÓá£
4. ldconfig×öµÄÕâЩ¶«Î÷¶¼ÓëÔËÐгÌÐòʱÓйأ¬¸ú±àÒëʱһµã¹ØÏµ¶¼Ã»ÓС£±àÒëµÄʱºò»¹ÊǸüÓ-L¾ÍµÃ¼Ó£¬²»Òª»ìÏýÁË¡£
5. ×ÜÖ®£¬¾ÍÊDz»¹Ü×öÁËʲô¹ØÓÚlibraryµÄ±ä¶¯ºó£¬×îºÃ¶¼ldconfigһϣ¬²»È»»á³öÏÖһЩÒâÏë²»µ½µÄ½á¹û¡£²»»á»¨Ì«¶àµÄʱ¼ä£¬µ«ÊÇ»áÊ¡ºÜ¶àµÄÊ¡£
¼¸¸öÌØÊâµÄ»·¾³±äÁ¿£º
LD_LIBRARY_PATH Õâ¸ö»·¾³±äÁ¿ÊÇ´ó¼Ò×îΪÊìϤµÄ£¬Ëü¸æËßloader£ºÔÚÄÄЩĿ¼ÖпÉÒÔÕÒµ½¹²Ïí¿â¡£¿ÉÒÔÉèÖöà¸öËÑË÷Ŀ¼£¬ÕâЩĿ¼֮¼äÓÃðºÅ·Ö¸ô¿ª¡£ÔÚlinuxÏ£¬»¹ÌṩÁËÁíÍâÒ»ÖÖ·½Ê½À´Íê³ÉͬÑùµÄ¹¦ÄÜ£¬Äã¿ÉÒÔ°ÑÕâЩĿ¼¼Óµ½/etc/ld.so.confÖУ¬»òÔòÔÚ/etc/ld.so.conf.dÀï´´½¨Ò»¸öÎļþ£¬°ÑĿ¼¼Óµ½Õâ¸öÎļþÀï¡£µ±È»£¬ÕâÊÇϵͳ·¶Î§ÄÚÈ«¾ÖÓÐЧµÄ£¬¶ø»·¾³±äÁ¿Ö»¶Ôµ±Ç°shellÓÐЧ¡£°´ÕÕ¹ßÀý£¬³ý·ÇÄãÓÃÉÏÊö·½Ê½Ö¸Ã÷£¬loaderÊDz»»áÔÚµ±Ç°Ä¿Â¼ÏÂÈ¥ÕÒ¹²Ïí¿âµÄ£¬ÕýÈçshell²»»áÔÚµ±Ç°Ä¿Ç°ÕÒ¿ÉÖ´ÐÐÎļþÒ»Ñù¡£
LD_PRELOAD Õâ¸ö»·¾³±äÁ¿¶ÔÓÚ³ÌÐòÔ±À´Ëµ£¬Ò²ÊÇÌØ±ðÓÐÓõġ£Ëü¸æËßloader£ºÔÚ½âÎöº¯ÊýµØÖ·Ê±£¬ÓÅÏÈʹÓÃLD_PRELOADÀïÖ¸¶¨µÄ¹²Ïí¿âÖеĺ¯Êý¡£ÕâΪµ÷ÊÔÌṩÁË·½±ã£¬±ÈÈ磬¶ÔÓÚC/C++³ÌÐòÀ´Ëµ£¬ÄÚ´æ´íÎó×îÄѽâ¾öÁË¡£³£¼ûµÄ×ö·¨¾ÍÊÇÖØÔØmallocϵÁк¯Êý£¬µ«ÄÇÑù×öÒªÇóÖØÐ±àÒë³ÌÐò£¬±È½ÏÂé·³¡£Ê¹Óà LD_PRELOAD»úÖÆ£¬¾Í²»ÓÃÖØÐ±àÒëÁË£¬°Ñ°ü×°º¯Êý¿â±àÒë³É¹²Ïí¿â£¬²¢ÔÚLD_PRELOAD¼ÓÈë¸Ã¹²Ïí¿âµÄÃû³Æ£¬ÕâЩ°ü×°º¯Êý¾Í»á×Ô¶¯±»µ÷ÓÃÁË¡£ÔÚlinuxÏ£¬»¹ÌṩÁËÁíÍâÒ»ÖÖ·½Ê½À´Íê³ÉͬÑùµÄ¹¦ÄÜ£¬Äã¿ÉÒÔ°ÑÒªÓÅÏȼÓÔØµÄ¹²Ïí¿âµÄÎļþÃûдÔÚ/etc/ld.so.preloadÀï¡£µ±È»£¬ÕâÊÇϵͳ·¶Î§ÄÚÈ«¾ÖÓÐЧµÄ£¬¶ø»·¾³±äÁ¿Ö»¶Ôµ±Ç°shellÓÐЧ¡£
LD_ DEBUG Õâ¸ö»·¾³±äÁ¿±È½ÏºÃÍæ£¬ÓÐʱ
Ïà¹ØÎĵµ£º
°²×°£¬Éý¼¶ºÍÐ¶ÔØÓ¦ÓÃÈí¼þÊÇÓ°ÏìÓû§¶Ô²Ù×÷ϵͳÆÀ¼ÛµÄ¾ö¶¨ÐÔÒòËØÖ®Ò»¡£¶ÔÓÚÈÕ½¥Á÷ÐÐµÄ GNU/Linux ²Ù×÷ϵͳ£¬ÓµÓмò½àÇ¿´óµÄÈí¼þ°ü¹ÜÀí»úÖÆ¹¦²»¿Éû¡£±¾ÎÄ´Ó»ù±¾µÄ rpm/dpkg ÃüÁîÐгö·¢£¬ÒÔ RHEL ºÍ Ubuntu
ΪÀý£¬½éÉܵäÐÍ Linux ϵͳÖÐÓ¦ÓÃÈí¼þµÄ¹ÜÀíºÍʹÓá£
RPM/DPKG Á½´óÕóÓª¼ò½é
ÔÚ GNU/Linux( ÒÔϼò³Æ Linux) ²Ù× ......
1. Workqueue
WorkqueueµÄÃû×־ͺÍËûµÄ¹¦ÄÜÒ»Ñù£ºÐèÒª´¦ÀíµÄ¹¤×÷ÁбíºÍ¹¤×÷µÄÌí¼Óɾ³ý£¨Ã²ËÆÃ»Óп´µ½ÈçºÎɾ³ýµÄ£©¡¢ÒÔ¼°¹¤×÷µÄµ÷¶ÈÖ´ÐС£
ÐèÒª´¦ÀíµÄ¹¤×÷Áбíͨ³£¶¼Î¬»¤ÔÚÄں˶ÔÏóworkqueue_structÀïÃæ¡£ÏµÍ³ÀïÃæ¿ÉÒÔÓжà¸öworkqueue_struct¡£ ......
Ŀ¼½á¹¹Îª£º
inc/hello.h
src/hello.c
main/main.c
Makefile
ÎļþÄÚÈÝΪ£º
hello.h:
void hello(char name[]);
hello.c:
#include <stdio.h>
void hello(char name[])
{
printf("Hello %s!\n", name);
}
main.c:
#include <stdio.h>
#include "hello.h"
// The second hello.h should ......
ÔÚLinuxÖУ¬Èç¹ûÒªÈýø³ÌÔÚºǫ́ÔËÐУ¬Ò»°ãÇé¿öÏ£¬ÎÒÃÇÔÚÃüÁîºóÃæ¼ÓÉÏ&¼´¿É£¬Êµ¼ÊÉÏ£¬ÕâÑùÊǽ«ÃüÁî·ÅÈëµ½Ò»¸ö×÷Òµ¶ÓÁÐÖÐÁË£º
[root@localhost /]# ./test.sh &
[1] 17208
È»ºóÎÒÃǾͿÉÒÔÓÃÒÔÏÂÃüÁî½øÐв鿴£º
[root@localhost /]# jobs -l
[1] 17208 Running ./test.sh &
¶ÔÓÚÒѾÔÚǰִ̨ÐеÄÃüÁî ......
ÄÚºËÆô¶¯µÄÏÖÔÚÒѾÊÇ¿ªÊ¼Ö´Ðк¯Êýstart_kernelº¯ÊýÁË¡£start_kernelº¯ÊýÔÚinit/main.cÖж¨Òå¡£start_kernelº¯ÊýÖ»ÊÇÍê³É
ÏàÓ¦µÄ½á¹¹µÄ³õʼ»¯ÈÎÎñ¡£
printk(KERN_NOTICE);
printk(linux_banner);
setup_arch(&command_line);
ÔÚubootµÄÒ»Ö±¹ý³ÌÖУ¬uboo ......