Ò׽ؽØÍ¼Èí¼þ¡¢µ¥Îļþ¡¢Ãâ°²×°¡¢´¿ÂÌÉ«¡¢½ö160KB

linux¶¯Ì¬Á´½Ó¿âµÄ´´½¨ÓëʹÓÃ

ʹÓÃlinux¶¯Ì¬Á´½Ó¿â£º
     ÔÚUnixÉÏ´æÔÚÁ½Öֿ⣺¶¯Ì¬¿â£¨.so£©ºÍ¾²Ì¬¿â£¨.a£©£¬²ÉÓö¯Ì¬¿â£¨¹²Ïí¶ÔÏ󣩼¼Êõ¿ÉÒÔ·½±ã³ÌÐò¼ä¹²Ïí£¬½ÚÊ¡³ÌÐòÕ¼Óпռ䣬Ôö¼Ó³ÌÐòµÄ¿ÉÀ©Õ¹ÐÔºÍÁé»îÐÔ¡£
    ²Ù×÷¶¯Ì¬¿âµÄº¯ÊýÔÚdlfcn.hÎļþÖж¨Ò壬ËùÒÔÒªÔÚʹÓö¯Ì¬¿âʱinclude <dlfcn.h>
   1. ´ò¿ª¶¯Ì¬Á´½Ó¿â£ºdlopen£¬º¯ÊýÔ­ÐÍvoid *dlopen (const char *filename, int flag); dlopenÓÃÓÚ´ò¿ªÖ¸¶¨Ãû×Ö(filename)µÄ¶¯Ì¬Á´½Ó¿â£¬²¢·µ»Ø²Ù×÷¾ä±ú¡£±ÈÈ磬void *pHandle = dlopen(strSoFilePath, RTLD_LAZY);
   2. È¡¶¯Ì¬¶ÔÏóµØÖ·£ºdlsym£¬º¯ÊýÔ­ÐÍΪ: void *dlsym(void *handle, char *symbol); dlsym¸ù¾Ý¶¯Ì¬Á´½Ó¿â²Ù×÷¾ä±ú(handle)Óë·ûºÅ(symbol)£¬·µ»Ø·ûºÅ¶ÔÓ¦µÄµØÖ·¡£×¢ÒâʹÓÃÕâ¸öº¯Êý²»µ«»ñÈ¡º¯ÊýµØÖ·£¬Ò²¿ÉÒÔ»ñÈ¡±äÁ¿µØÖ·¡£±ÈÈ磬¼ÙÉèÎÒÔÚsoÖж¨ÒåÁËÒ»¸övoid mytest()º¯Êý£¬ÄÇÔÚʹÓÃsoʱÏÈÉêÃ÷Ò»¸öº¯ÊýÖ¸Õ룺void (*pMytest)();È»ºóʹÓÃdlsymº¯Êý½«º¯ÊýÖ¸ÕëpMytestÖ¸Ïòmytestº¯Êý£¬pMytest = (void (*)())dlsym(pHandle, "mytest");
   3. ¹Ø±Õ¶¯Ì¬Á´½Ó¿â£ºdlclose£¬º¯ÊýÔ­ÐÍΪ: int dlclose (void *handle); ¸Ãº¯Êý½«¸Ã.soµÄÒýÓüÆÊý¼õÒ»£¬µ±ÒýÓüÆÊýΪ0ʱ£¬½«Ëü´ÓϵͳÖÐÐ¶ÔØ¡£
   4. ¶¯Ì¬¿â´íÎóº¯Êý£ºdlerror£¬º¯ÊýÔ­ÐÍΪ: const char *dlerror(void); µ±¶¯Ì¬Á´½Ó¿â²Ù×÷º¯ÊýÖ´ÐÐʧ°Üʱ£¬dlerror¿ÉÒÔ·µ»Ø³ö´íÐÅÏ¢£¬·µ»ØÖµÎªNULLʱ±íʾûÓдíÎóÐÅÏ¢¡£
   ÔÚÈ¡µ½º¯ÊýÖ´ÐеØÖ·ºó£¬¾Í¿ÉÒÔÔÚ¶¯Ì¬¿âµÄʹÓóÌÐòÀïÃæ¸ù¾Ý¶¯Ì¬¿âÌṩµÄº¯Êý½Ó¿ÚÉùÃ÷µ÷Óö¯Ì¬¿âÀïÃæµÄº¯Êý¡£ÔÚ±àдµ÷Óö¯Ì¬¿âµÄ³ÌÐòµÄmakefileÎļþʱ£¬ÐèÒª¼ÓÈë±àÒëÑ¡Ïî-ldl¡£
´´½¨linux¶¯Ì¬Á´½Ó¿â£º
    ´Óvoid *dlsym(void *handle, char *symbol); µÄ²ÎÊý¿ÉÒÔ¿´³ö£¬¸Ãº¯ÊýÖ»´«Á½¸ö²ÎÊý£ºÒ»¸öÖ¸ÏòsoµÄhandleºÍÒ»¸öº¯ÊýµÄsymbol£¬ËùÒÔsoÀïÃæµÄº¯ÊýÓ¦¸Ã²»ÔÊÐíÖØÔØ£¬·ñÔò¸ù¾ÝÒ»¸ösymbol²»ÄÜÈ·¶¨Ö¸ÏòÄǸöº¯Êý¡£ÎªÁ˼æÈÝCºÍC++ÔÚsoÖж¨Ò庯ÊýʱÓÃextern "C"£¬ÒÔÏÂÓÃÀý×Ó˵Ã÷ÈçºÎ´´½¨linux¶¯Ì¬Á´½Ó¿âsoÎļþ¡£
//test.h
#ifdef __cplusplus
extern "C"
{
#endif
void mytest();
#ifdef __cplusplus
}
#endif
//test.c
#include <stdio.h>
#include "mytest.h"
void mytest()
{
 printf("mytest ok in .so file\n");
}
//main.cpp
#include <dlfcn.h>
#inclu


Ïà¹ØÎĵµ£º

Linux Bashѧϰ£¨Î壩£ºÉèÖû·¾³


¡¡¡¡±¾ÎÄÒ²¼´¡¶Learning the bash Shell¡·3rd EditionµÄµÚÈýÕÂCustomizing Your EnvironmentÖ®¶ÁÊé±Ê¼Ç£¬µ«ÎÒÃǽ«²»ÏÞÓÚ´Ë¡£ÉèÖÃÒ»¸öºÃµÄÓû§»·¾³£¬¶ÔÎÒÃÇ¿ª·¢ÊǷdz£¹Ø¼üµÄ¡£ÔÚÕâÒ»Õ½ÚÖУ¬´ÓËĸö·½Ãæ½øÐнéÉÜ£ºÌرðµÄÎļþ£¬±ðÃû£¬Ñ¡Ï²ÎÊý¡£
ÌØÊâÎļþ
¡¡¡¡ÔÚÓû§Ä¿Â¼ÏÂÓм¸¸öÌØÊâµÄÎļþ£¬¿ÉÒÔÓÃls -a
À´²é¿´ÕâЩÒþ² ......

LinuxÄÚºËÉ豸ģÐÍ(3)

ÒëÕߣº¹ùÉÙ±¯
2009/12/01
Ô­ÎÄ£ºlinux-2.6/Documentation/driver-model/bus.txt
×ÜÏßÀàÐÍ
¶¨Òå
~~~~
struct bus_type {
    char            * name;
    struct subsystem    subsys;
    struct kse ......

LinuxÏÂSVN·þÎñÆ÷µÄ´î½¨ÓëÅäÖÃ

LinuxÏÂSVN·þÎñÆ÷µÄ´î½¨ÓëÅäÖÃ
ÏÂÔØ×îеÄsvnѹËõ°ü
http://subversion.tigris.org/servlets/ProjectDocumentList?expandFolder=260&folderID=260
//½âѹSubVersion°²×°°ü (rootÓû§½øÐÐÏÂÃæµÄ²Ù×÷) # tar xvzf subversion-1.4.5.tar.gz
//½øÈë½âѹºóµÄĿ¼
# cd Subversion-1.4.5
//ÅäÖÃsubversion°²×°
#./conf ......

mylab_sys_exec UDFµ÷ÓÃmysqlÍⲿϵͳÃüÁî(For linux)

ÓÐʱºòΪÁË·½±ã£¬ÀûÓÃevent/triggerµ÷ÓÃϵͳÍⲿÃüÁ¿ÉÒòΪ°²È«ÎÊÌ⣬mysql×ÔÉí²¢Ã»ÓÐÌṩÏà¹ØÃüÁÕâÀïÌṩ¸öµ÷ÓÃϵͳÃüÁîµÄ×Ô¶¨Ò庯Êýmylab_sys_exec
soÎļþÏÂÔØ:mylab_sys_exec.so ( mysql5.1.34 ²âÊÔͨ¹ý)
¼ÓÔØ:
CREATE FUNCTION mylab_sys_exec RETURNS INTEGER SONAME "mylab_sys_exec.so";
ʹÓÃ:
SELECT myl ......
© 2009 ej38.com All Rights Reserved. ¹ØÓÚE½¡ÍøÁªÏµÎÒÃÇ | Õ¾µãµØÍ¼ | ¸ÓICP±¸09004571ºÅ