Èç¹ûÄãÄÜÕýÈ·»Ø´ðÒÔÏÂÎÊÌâ²¢Éî¿ÌÀí½âÏà¹ØÖªÊ¶µãÔÀí£¬ÄÇôÄã¿ÉÒÔËãµÃÉÏ»ù±¾ºÏ¸ñµÄLinuxÄں˿ª·¢¹¤³Ìʦ£¬ÊÔÊÔ¿´£¡
1)LinuxÖÐÖ÷ÒªÓÐÄļ¸ÖÖÄÚºËËø£¿
2)LinuxÖеÄÓû§Ä£Ê½ºÍÄÚºËģʽÊÇʲôº¬Ò⣿
3)ÔõÑùÉêÇë´ó¿éÄÚºËÄڴ棿
4)Óû§½ø³Ì¼äͨÐÅÖ÷ÒªÄļ¸ÖÖ·½Ê½£¿
5)ͨ¹ý»ï°éϵͳÉêÇëÄÚºËÄÚ´æµÄº¯ÊýÓÐÄÄЩ£¿
6)ͨ¹ýslab·ÖÅäÆ÷ÉêÇëÄÚºËÄÚ´æµÄº¯ÊýÓУ¿
7)LinuxµÄÄں˿ռäºÍÓû§¿Õ¼äÊÇÈçºÎ»®·ÖµÄ£¨ÒÔ32λϵͳΪÀý£©£¿
8)vmalloc()ÉêÇëµÄÄÚ´æÓÐÊ²Ã´ÌØµã£¿
9)Óû§³ÌÐòʹÓÃmalloc()ÉêÇëµ½µÄÄÚ´æ¿Õ¼äÔÚʲô·¶Î§£¿
10)ÔÚÖ§³Ö²¢Ê¹ÄÜMMUµÄϵͳÖУ¬LinuxÄں˺ÍÓû§³ÌÐò·Ö±ðÔËÐÐÔÚÎïÀíµØÖ·Ä£Ê½»¹ÊÇÐéÄâµØÖ·Ä£Ê½£¿
11)ARM´¦ÀíÆ÷ÊÇͨ¹ý¼¸¼¶Ò²±í½øÐд洢¿Õ¼äÓ³ÉäµÄ£¿
12)LinuxÊÇͨ¹ýʲô×é¼þÀ´ÊµÏÖÖ§³Ö¶àÖÖÎļþϵͨµÄ£¿
13)LinuxÐéÄâÎļþϵͳµÄ¹Ø¼üÊý¾Ý½á¹¹ÓÐÄÄЩ£¿£¨ÖÁÉÙд³öËĸö£©
14)¶ÔÎļþ»òÉ豸µÄ²Ù×÷º¯Êý±£´æÔÚÄǸöÊý¾Ý½á¹¹ÖУ¿
15)LinuxÖеÄÎļþ°üÀ¨ÄÄЩ£¿
16)´´½¨½ø³ÌµÄϵͳµ÷ÓÃÓÐÄÇЩ£¿
17)µ÷ÓÃschedule()½øÐнø³ÌÇл»µÄ·½Ê½Óм¸ÖÖ£¿
18)Linuxµ÷¶È³ÌÐòÊǸù¾Ý½ø³ÌµÄ¶¯Ì¬ÓÅÏȼ¶»¹ÊǾ²Ì¬ÓÅÏȼ¶À´µ÷¶È½ø³ÌµÄ£¿
19)½ø³Ìµ÷¶ÈµÄºËÐÄÊý ......
from: http://cc.byexamples.com/20070520/tap-the-interrupt-signal/
When you hit control+c, you are actually send a SIGINT ( Interrupt signal ) to your program. By default, your program will be terminated after receiving SIGINT. But you can change the way of handling Interrupt signal.
Some of the application tends to ignore SIGINT. You can easily do that with sigaction.
#include<stdio.h>
#include<signal.h>
void bypass_sigint(int sig_no)
{
}
int main()
{
struct sigaction sa;
memset(&sa, 0, sizeof(sa));
sa.sa_handler = &bypass_sigint;
sigaction(SIGINT, &sa,NULL);
while(1)
{
sleep(1);
printf("do nothing \n ");
}
return 0;
}
Create a void function that intentionally do nothing. Create a sigaction structure variable, set the sa_handle point to the void fucntion. At last calling sigaction function, telling the system, while receiving SIGINT, c ......
ÏÂÔØÐÂÄÚºËÒÔºó£¬ÏȰÑLinux-2.6.18.2.tar.bz2 ¸´ÖƵ½/usr/src/ µÄÏÂÃæ
tar –jxvf Linux-2.6.18.2.tar.bz2 cd Linux-2.6.18.2 make mrproper °ÑÔÀ´±àÒë²úÉúµÄÀ¬»øÉ¾³ý
ÅäÖÃÄں˿ÉÒÔ¸ù¾ÝÐèÒªÓë°®ºÃʹÓÃÏÂÃæÃüÁîÖеÄÒ»¸ö£º
££make config £¨»ùÓÚÎı¾µÄ×îΪ´«Í³µÄÅäÖýçÃæ£©
££make menuconfig £¨»ùÓÚÎı¾Ñ¡µ¥µÄÅäÖýçÃæ£©
££make xconfig £¨»ùÓÚͼÐδ°¿ÚģʽµÄÅäÖýçÃæ£©
££make oldconfig £¨Èç¹ûÖ»ÏëÔÚÔÀ´ÄÚºËÅäÖõĻù´¡ÉÏÐÞ¸ÄһЩСµØ·½£¬»áʡȥ²»ÉÙÂé·³£©
½øÐÐÅäÖÃʱ£¬´ó²¿·ÖÑ¡Ïî¿ÉÒÔʹÓÃÆäȱʡֵ£¬Ö»ÓÐС²¿·ÖÐèÒª¸ù¾ÝÓû§²»Í¬µÄÐèҪѡÔñ¡£ÀýÈ磬Èç¹ûÐèÒªÄÚºËÖ§³ÖDOS·ÖÇøµÄÎļþϵͳ£¬ÔòÒªÔÚÎļþϵͳ²¿·ÖÑ¡ÔñFAT»òDOSϵͳ֧³Ö£»ÏµÍ³Èç¹ûÅäÓÐÍø¿¨¡¢PCMCIA¿¨µÈ£¬ÐèÒªÔÚÍøÂçÅäÖÃÖÐÑ¡ÔñÏàÓ¦¿¨µÄÀàÐÍ¡£
¡¡¡¡
Ñ¡ÔñÏàÓ¦µÄÅäÖÃʱ£¬ÓÐÈýÖÖÑ¡Ôñ£¬ËüÃÇ·Ö±ð´ú±íµÄº¬ÒåÈçÏ£º
¡¡¡¡
“Y”£ ½«¸Ã¹¦ÄܱàÒë½øÄÚºË
&nb ......
×÷Ϊһ¸ö»ù±¾µÄͼÏñѹËõ·½Ê½£¬JPEG ÒѾµÃµ½Á˹㷺µÄÔËÓ㬵« JPEG Ïà¹ØµÄ»ù±¾ÔÀí£¬È´¾³£±»ºöÊÓ£¬»ò½âÊ͵úܲ»È·ÇС£ ÕâÀïÎÒÃÇÏêϸÌÖÂÛһϠJPEG µÄ±àÂëÔÀí£¬²¢½áºÏʵÀýÀ´¸ø³öÒ»¸ö¸ü¼Ó¸ÐÐÔµÄÈÏʶ¡£JPEG ±àÂëµÄÏêϸ¹ý³ÌÓÐ×ÅÖî¶àµÄÐÅÏ¢¿ÉÒÔ¸øÎÒÃǾ޴óµÄÆô·¢£¬ÎÒÃÇÔÚÕâÀïÌÖÂ۵ľÍÊÇÒª¶ÔÕâЩÐÅÏ¢×öÒ»¸ö¾ßÌåϸÖµķÖÎö£¬Í¨¹ýÎÒÃǵÄÌÖÂÛ£¬´ó¼Ò»á¶Ô JPEG ±àÂë¹ý³ÌÖгöÏÖµÄÄÚÈÝÓÐÒ»¸öÈ·ÇеÄÁ˽⣬²¢ÇÒÄÜÁ˽⵽ÕâЩÄÚÈݵÄÀ´ÁúÈ¥Âö¡£
Ò»¡¢ÏµÍ³¼Ü¹¹
±¾ÎÄÒÔÒ»¸öʵ¼ÊµÄ²úƷΪÀý£¬À´ËµÃ÷ JPEG ÔÚÆäÖеÄÓ¦Óá£
±¾ÏµÍ³ÎªÒ»¸öǶÈëʽ Linux ÍøÂç²¥·ÅÆ÷£¬Ö÷ÒªµÄ¹¦ÄÜΪ²¥·Å¼ÒÍ¥ÍøÂçÖеĶàýÌåÎļþ£¬ÔÚ¼ÒÍ¥¿ÍÌüµÈ»·¾³ÖÐÓÐ×Å´óÁ¿µÄÓ¦Óã¬Ëü¿ÉÒÔ¸øÓû§Ìṩ¸ü·½±ã¿ì½ÝµÄýÌåÎļþµÄ²¥·Å·½Ê½£¬²¢Äܳä·ÖÀûÓüÒÍ¥ÒôÏìϵͳµÄ¾Þ´ó¹¦ÄÜ£¬¶ø·Ç PC »·¾³ÏÂÓÐÏÞµÄÍⲿÉ豸£¬´ó´ó¸ÄÉÆÁËýÌåÎļþµÄ²¥·ÅÌåÑé¡£
ϵͳÖ÷ÒªµÄ¹¦ÄܰüÀ¨£º
±¾ÏµÍ³¼Ü¹¹ÈçÏÂͼ£º
±¾ÏµÍ³ÊÇ»ùÓÚǶÈëʽ Linux µÄÒ»¸öÓ¦Óã¬Ê¹ÓõÄÊÇ ucLinux 2.4.22£¬²¢Ê¹ÓÃÁË microwindows ×÷Ϊ GUI ½çÃæ£¬µ×²ãʹÓÃÁË Linux kernel µÄ FrameBuffer ×÷ΪÏÔʾÊä³ö¡£
´ËϵͳÔÚÁ½¸ö·½ÃæÊ¹Óõ½ÁË JPEG ¿â£º
1¡¢ UI µÄÏÔʾ£ ......
ÎÒÃÇͨ³£°ÑһЩ¹«Óú¯ÊýÖÆ×÷³Éº¯Êý¿â£¬¹©ÆäËü³ÌÐòʹÓá£
º¯Êý¿â·ÖΪ¾²Ì¬¿âºÍ¶¯Ì¬¿âÁ½ÖÖ¡£
¾²Ì¬¿âÔÚ³ÌÐò±àÒëʱ»á±»Á¬½Óµ½Ä¿±ê´úÂëÖУ¬³ÌÐòÔËÐÐʱ½«²»ÔÙÐèÒª¸Ã¾²Ì¬¿â¡£
¶¯Ì¬¿âÔÚ³ÌÐò±àÒëʱ²¢²»»á±»Á¬½Óµ½Ä¿±ê´úÂëÖУ¬¶øÊÇÔÚ³ÌÐòÔËÐÐÊDzű»ÔØÈ룬Òò´ËÔÚ³ÌÐòÔËÐÐʱ»¹ÐèÒª¶¯Ì¬¿â´æÔÚ¡£
±¾ÎÄÖ÷Ҫͨ¹ý¾ÙÀýÀ´ËµÃ÷ÔÚLinuxÖÐÈçºÎ´´½¨¾²Ì¬¿âºÍ¶¯Ì¬¿â£¬ÒÔ¼°Ê¹ÓÃËüÃÇ¡£
ÔÚ´´½¨º¯Êý¿âǰ£¬ÎÒÃÇÏÈÀ´×¼±¸¾ÙÀýÓõÄÔ´³ÌÐò£¬²¢½«º¯Êý¿âµÄÔ´³ÌÐò±àÒë³É.oÎļþ¡£
µÚ1²½£º±à¼µÃµ½¾ÙÀýµÄ³ÌÐò--hello.h¡¢hello.cºÍmain.c£»
hello.h(¼û³ÌÐò1)Ϊ¸Ãº¯Êý¿âµÄÍ·Îļþ¡£
hello.c(¼û³ÌÐò2)ÊǺ¯Êý¿âµÄÔ´³ÌÐò£¬ÆäÖаüº¬¹«Óú¯Êýhello£¬¸Ãº¯Êý½«ÔÚÆÁÄ»ÉÏÊä³ö"Hello XXX!"¡£
main.c(¼û³ÌÐò3)Ϊ²âÊÔ¿âÎļþµÄÖ÷³ÌÐò£¬ÔÚÖ÷³ÌÐòÖе÷ÓÃÁ˹«Óú¯Êýhello¡£
³ÌÐò1: hello.h
#ifndef HELLO_H
#define HELLO_H
void hello(const char *name);
#endif //HELLO_H
³ÌÐò2: hello.c
#include <stdio.h>
void hello(const char *name)
{
printf("Hello %s!\n", name);
}
³ÌÐò3: mai ......
1.ʲôÊÇ¿â
ÔÚwindowsƽ̨ºÍlinuxƽ̨϶¼´óÁ¿´æÔÚ×ſ⡣
±¾ÖÊÉÏÀ´Ëµ¿âÊÇÒ»ÖÖ¿ÉÖ´ÐдúÂëµÄ¶þ½øÖÆÐÎʽ£¬¿ÉÒÔ±»²Ù×÷ÏµÍ³ÔØÈëÄÚ´æÖ´ÐС£
ÓÉÓÚwindowsºÍlinuxµÄ±¾Öʲ»Í¬£¬Òò´Ë¶þÕß¿âµÄ¶þ½øÖÆÊDz»¼æÈݵġ£
±¾ÎĽöÏÞÓÚ½éÉÜlinuxϵĿ⡣
2.¿âµÄÖÖÀà
linuxϵĿâÓÐÁ½ÖÖ£º¾²Ì¬¿âºÍ¹²Ïí¿â£¨¶¯Ì¬¿â£©¡£
¶þÕߵIJ»Í¬µãÔÚÓÚ´úÂë±»ÔØÈëµÄʱ¿Ì²»Í¬¡£
¾²Ì¬¿âµÄ´úÂëÔÚ±àÒë¹ý³ÌÖÐÒѾ±»ÔØÈë¿ÉÖ´ÐгÌÐò£¬Òò´ËÌå»ý½Ï´ó¡£
¹²Ïí¿âµÄ´úÂëÊÇÔÚ¿ÉÖ´ÐгÌÐòÔËÐÐʱ²ÅÔØÈëÄÚ´æµÄ£¬ÔÚ±àÒë¹ý³ÌÖнö¼òµ¥µÄÒýÓã¬Òò´Ë´úÂëÌå»ý½ÏС¡£
3.¿â´æÔÚµÄÒâÒå
¿âÊDZðÈËдºÃµÄÏÖÓе쬳ÉÊìµÄ£¬¿ÉÒÔ¸´ÓõĴúÂ룬Äã¿ÉÒÔʹÓõ«Òª¼ÇµÃ×ñÊØÐí¿ÉÐÒé¡£
ÏÖʵÖÐÿ¸ö³ÌÐò¶¼ÒªÒÀÀµºÜ¶à»ù´¡µÄµ×²ã¿â£¬²»¿ÉÄÜÿ¸öÈ˵ĴúÂë¶¼´ÓÁ㿪ʼ£¬Òò´Ë¿âµÄ´æÔÚÒâÒå·ÇͬѰ³£¡£
¹²Ïí¿âµÄºÃ´¦ÊÇ£¬²»Í¬µÄÓ¦ÓóÌÐòÈç¹ûµ÷ÓÃÏàͬµÄ¿â£¬ÄÇôÔÚÄÚ´æÀïÖ»ÐèÒªÓÐÒ»·Ý¸Ã¹²Ïí¿âµÄʵÀý¡£
4.¿âÎļþÊÇÈçºÎ²úÉúµÄÔÚlinuxÏÂ
¾²Ì¬¿âµÄºó׺ÊÇ.a£¬ËüµÄ²úÉú·ÖÁ½²½
Step 1.ÓÉÔ´Îļþ±àÒëÉú³ÉÒ»¶Ñ.o£¬Ã¿¸ö.oÀï¶¼°üº¬Õâ¸ö±àÒëµ¥ÔªµÄ·ûºÅ±í
Step 2.arÃüÁºÜ¶à.oת»»³É.a£¬³ÉÎľ²Ì¬¿â
¶¯Ì¬¿âµÄºó׺ÊÇ.so£¬ËüÓÉgcc¼ÓÌØ¶¨²ÎÊý±àÒë²úÉú¡£
ÀýÈç:
$ gcc -fPIC ......