Linux ¹²Ïí¿â±à³Ì[ת]
Linux ¹²Ïí¿â±à³Ì
×÷ÕߣºÖÕÄÏ <li.zhongnan@hotmail.com
>
1¡¢½éÉÜ
¶¯Ì¬¿âÊdzÌÐòÉè¼Æ³£Óõļ¼Êõ£¬²ÉÓö¯Ì¬¿â¿ÉÒÔÓÐЧµÄ¼õÉÙ³ÌÐò´óС£¬½ÚÊ¡¿Õ¼ä£¬Ìá¸ßЧÂÊ£¬Ôö¼Ó³ÌÐòµÄ¿ÉÀ©Õ¹ÐÔ£¬±ãÓÚÄ£¿é»¯¹ÜÀí¡£ÔÚWindowsºÍ
Linux²Ù×÷ϵͳÖж¼Óж¯Ì¬¿âµÄ¸ÅÄî¡£Windows½«Æä³ÆÎª¶¯Ì¬Á´½Ó¿â£¨Dynamic Link
Library£¬DLL£©£¬ÆäÎļþÀ©Õ¹ÃûΪ.dll£¬Linux³ÆÆäΪ¹²Ïí¿â¼¼Êõ£¨Shared Library£©£¬ÏàÓ¦µÄ¹²Ïí¿âÎļþÀ©Õ¹ÃûΪ.so¡£
¹ÊÃû˼Ò壬¶¯Ì¬¿âÔÚ³ÌÐòÔËÐеÄʱºò±»¶¯Ì¬Á´½Ó¡£µ«ÊÇÔÚ¾ßÌåʹÓö¯Ì¬¿âµÄʱºòÈ´ÓÐÁ½ÖÖ²»Í¬µÄ·½Ê½£ºÒþʽÁ´½ÓºÍÏÔʽÁ´½Ó¡£ÒþʽÁ´½ÓÔÚ±àÒë/Á´½Ó½×¶ÎÍê
³É£¬ÓɱàÒëϵͳ¸ù¾Ý¶¯Ì¬¿âµÄÍ·ÎļþºÍ¿âÎļþ½øÐбàÒëºÍÁ´½Ó£¬´Ó¶øÈ·¶¨´ýµ÷Óõĺ¯ÊýÔÐκ͵ØÖ·¡£ÏÔʽÁ´½ÓÔòÊÇÀûÓÃAPIº¯ÊýʵÏÖ¼ÓÔØºÍÐ¶ÔØ¹²Ïí¿â£¬»ñÈ¡´øµ÷
Óú¯ÊýµØÖ·£¬»ñÈ¡´íÎóÐÅÏ¢µÈ¹¦ÄÜ¡£
2¡¢ÒþʽÁ´½Ó¾ÙÀý
£¨1£©¶¯Ì¬¿âÎļþ´úÂ룺dl_func.c
#include <stdio.h>
extern char name[];
int add(int a, int b)
{
printf("calling add\n");
printf("Hello, %s!\n", name);
return a + b;
}
¸ÃÎļþÖеÄadd()º¯Êý¼ÆËãÁ½¸öÕûÊýÖ®ºÍ£¬²¢ÇÒ´òÓ¡Íⲿ±äÁ¿µÄÖµ£¬¸ÃÍⲿ±äÁ¿Óɵ÷Óù²Ïí¿âµÄÊÂÀý³ÌÐò¶¨Òå¡£
£¨2£©¿Í»§¶ËÊÂÀý´úÂ룺dl_demo1.c
#include <stdio.h>
#include <dlfcn.h>
int add(int a, int b);
char name[100];
int main(int argc, char *argv[]) {
int a = 10, b = 20;
int c = 0;
strcpy(name, "NHN XDBMS");
c = add(a, b);
printf("%d + %d = %d\n", a, b, c);
return 0;
}
¸ÃÊÂÀý³ÌÐòµ÷Óù²Ïí¿âµÄÖеÄadd()º¯Êý¼ÆËãÁ½ÊýÖ®ºó²¢´òÓ¡£¬Í¬Ê±ÔÚÊÂÀý³ÌÐòÖУ¬¸ø±äÁ¿name¸³Öµ£¬ÒÔ±ãÔÚadd()º¯ÊýÖдòÓ¡¡£
£¨3£©±àÒëÓëÔËÐÐ
±àÒë¹²Ïí¿â£º
gcc -o libdl_func.so -fPIC -rdynamic -shared dl_func.c
Ñ¡Ïî-fPICָʾ±àÒëÆ÷½«´úÂë±àÒë³ÉλÖöÀÁ¢µÄ´úÂ룬һ°ãÐèÒªÒÔ³ÌÐòÎļþ
Ïà¹ØÎĵµ£º
2009 Äê 4 ÔÂ 23 ÈÕ
±¾ÎÄÖÐÎÒÃÇÕë¶Ô Linux É϶àÏ̱߳à³ÌµÄÖ÷ÒªÌØÐÔ×ܽá³ö 5 Ìõ¾Ñ飬ÓÃÒÔ¸ÄÉÆ Linux ¶àÏ̱߳à³ÌµÄϰ¹ßºÍ±ÜÃâÆäÖеĿª·¢ÏÝÚå¡£ÔÚ±¾ÎÄÖУ¬ÎÒÃÇ´©²åһЩ Windows µÄ±à³ÌÓÃÀýÓÃÒÔ¶Ô±È Linux ÌØÐÔ£¬ÒÔ¼ÓÉî¶ÁÕßÓ¡Ïó¡£
±³¾°
Linux ƽ̨ÉϵĶàÏ̳߳ÌÐò¿ª·¢Ïà¶ÔÓ¦ÆäËûƽ̨£¨±ÈÈç Windows£©µÄ¶àÏß³Ì API ÓÐһЩϸ΢ ......
ÔÚÔĶÁGNU/LinuxÄں˴úÂëʱ£¬ÎÒÃÇ»áÓöµ½Ò»ÖÖÌØÊâµÄ½á¹¹³õʼ»¯·½Ê½¡£¸Ã·½Ê½ÊÇijЩC½Ì²Ä£¨ÈçÌ·¶þ°æ¡¢K&R¶þ°æ£©ÖÐûÓнéÉܹýµÄ¡£ÕâÖÖ·½Ê½³ÆÎªÖ¸¶¨³õʼ»¯£¨designated initializer£©¡£ÏÂÃæÎÒÃÇ¿´Ò»¸öÀý×Ó£¬Linux-2.6.x/drivers/usb/storage/usb.cÖÐÓÐÕâÑùÒ»¸ö½á¹¹Ìå³õʼ»¯ÏîÄ¿£º
static struct usb_driver usb_storage_dri ......
Ìâ¼Ç£º½ñÌì¿´µ½Ò»Æª¹ØÓڲ鿴CPUºÍ²Ù×÷ϵͳÐÅÏ¢µÄÎÄÕ£¬×ª¹ýÀ´ºÍ´ó¼Ò·ÖÏíһϣ¬O(∩_∩)O£¡
Á˽âcpu¼Ü¹¹ http://blog.csdn.net/wyzxg/archive/2009/12/17/5027738.aspx
ǰÁ½Ìì¼òµ¥×ܽáÁËcpu¼Ü¹¹£¬½ñÌì×ܽáϲ鿴¸÷ÖÖosϵͳµÄλÊýºÍcpuÓ²¼þÖ§³ÖµÄλÊý£¬ÒòΪÕâЩÎÒÃÇÔÚÈÕ³£¹¤×÷ÖÐÒª¾³£Óõ½µÄ£¬×÷ΪÈÕ³£µÄ ......
LinuxÉ豸Çý¶¯³ÌÐòÖ®¶ÁÊé±Ê¼Ç£¨Ò»£©
——µÚÈýÕÂ×Ö·ûÉ豸Çý¶¯³ÌÐò
¡ð¡¢ËµÃ÷
±Ê¼ÇÊÊÓÃÓÚLinuxµÄ2.6.10ÒÔºóµÄÄںˡ£
±Ê¼ÇÒÔLinux Device Driver3ÌṩµÄscull³ÌÐò(scullĿ¼ÖеÄmain.cºÍscull.h) ......
ÔÚlinuxÏÂÔõôȡ×òÌ죨ǰһÌ죩µÄÈÕÆÚ£¿
man
date£¬¿ÉÒÔ¿´µ½date¿ÉÒÔÏÔʾµ±Ç°µÄʱ¼ä£¬ÐÞ¸Äϵͳʱ¼ä£¬»òÕßÏÔʾָ¶¨µÄʱ¼ä¡£È¡µ½µ±Ç°Ê±¼ä£¬µ±È»¿ÉÒÔ·´Ëã»ØÈ¥£¬µ«ÓÖÒªÅжÏÊÇ·ñÊÇÒ»¸öÔµÄ×îºóÒ»
Ì죬һÄêµÄ×îºóÒ»Ì죬 »¹ÓÐÈòÄêÐèÒªÅжϣ¬Ð´³öµÄ½Å±¾²»ÊÇ10¼¸ÐÐÄܽâ¾öµÄ¡£Æäʵdate±¾Éí¾ÍÓÐÒ»¸ö·½·¨¿ÉÒÔ¼ÆËãʱ¼ä£¬×òÌ죬Π......