尊龙凯时人生就是搏

ʹÓÃAutotools¹¹½¨LinuxÇý¶¯Ä£¿éµÄÉèÖü¼ÇÉ

ʹÓÃautotools¹¹½¨linuxÇý¶¯Ä£¿éµÄÉèÖü¼ÇÉ

¸ÅÊö

ÔÚLinuxϵͳÖÐ £¬Çý¶¯³ÌÐòÊÇÓë×°±¸¾ÙÐÐͨѶµÄ½¹µã×é¼þ¡£ÎªÁËÀû±ãµØ¹¹½¨ºÍ×°ÖÃÇý¶¯³ÌÐò £¬ÎÒÃÇ¿ÉÒÔʹÓÃAutotools¹¤¾ßÁ´¡£±¾ÎÄÏÈÈÝÔõÑùʹÓÃAutotoolsÀ´ÉèÖᢹ¹½¨ºÍ×°ÖÃLinuxÇý¶¯Ä£¿é £¬²¢ÌṩһЩÊÊÓõļ¼ÇɺÍʾÀý´úÂë¡£

Autotools¼ò½é

AutotoolsÊÇÒ»¸ö¿ªÔ´¹¤¾ß¼¯ £¬ÓÃÓÚ×Ô¶¯»¯Èí¼þ¹¹½¨Àú³Ì¡£Ëü°üÀ¨ÁËһϵÁеŤ¾ßºÍ¹æ·¶ £¬ÈçAutoconf¡¢AutomakeºÍLibtool¡£AutotoolsµÄÓÅÊÆÔÚÓÚ¿ÉÒÔƾ֤²î±ðµÄƽ̨ºÍϵͳÇéÐÎÀ´ÌìÉú¿ÉÒÆÖ²µÄ¹¹½¨¾ç±¾¡£

ÉèÖÃÇý¶¯³ÌÐò

ʹÓÃAutotoolsÀ´ÉèÖÃÇý¶¯³ÌÐòµÄ¹¹½¨ÇéÐκÜÊǼòÆÓ¡£Ê×ÏÈ £¬ÎÒÃÇÐèҪΪÇý¶¯³ÌÐò½¨ÉèÒ»¸öĿ¼ £¬²¢ÔÚ¸ÃĿ¼Ï½¨ÉèÒ»¸öÃûΪconfigure.acµÄÎļþ¡£configure.acÎļþÊÇÒ»¸öAutoconfµÄÉèÖÃÎļþ £¬ÓÃÓÚ½ç˵ÎÒÃǵÄÇý¶¯³ÌÐòµÄÒÀÀµºÍ¹¹½¨Ñ¡Ïî¡£

ÏÂÃæÊÇÒ»¸ö¼òÆÓµÄconfigure.acʾÀý£º

AC_INIT([mydriver], [1.0], [example@example.com])
AM_INIT_AUTOMAKE([-Wall -Werror foreign])

AC_PROG_CC
AC_CONFIG_HEADERS([config.h])

AC_CONFIG_FILES([Makefile])

AC_OUTPUT

µÇ¼ºó¸´ÖÆ

ÔÚÉÏÃæµÄʾÀýÖÐ £¬AC_INITº¯ÊýÓÃÓÚ½ç˵Çý¶¯³ÌÐòµÄÃû³Æ¡¢°æ±¾ºÍÁªÏµ·½·¨¡£AM_INIT_AUTOMAKEº¯ÊýÓÃÓÚ³õʼ»¯Automake £¬²¢Ö¸¶¨Ò»Ð©±àÒëÑ¡Ïî¡£

½ÓÏÂÀ´ £¬ÎÒÃÇÐèÒªÔÚÇý¶¯³ÌÐòĿ¼Ï½¨ÉèÒ»¸öÃûΪMakefile.amµÄÎļþ¡£Makefile.amÎļþÊÇÒ»¸öAutomakeµÄ¹æÔòÎļþ £¬ÓÃÓÚ½ç˵ÔõÑù¹¹½¨ºÍ×°ÖÃÇý¶¯³ÌÐò¡£

ÏÂÃæÊÇÒ»¸ö¼òÆÓµÄMakefile.amʾÀý£º

AUTOMAKE_OPTIONS = subdir-objects

bin_PROGRAMS = mydriver

mydriver_SOURCES = mydriver.c

µÇ¼ºó¸´ÖÆ

ÔÚÉÏÃæµÄʾÀýÖÐ £¬bin_PROGRAMS½ç˵ÁËÒª¹¹½¨µÄ¿ÉÖ´ÐгÌÐòµÄÃû³Æ¡£mydriver_SOURCES½ç˵Á˹¹½¨¿ÉÖ´ÐгÌÐòËùÐèµÄÔ´Îļþ¡£

¹¹½¨Çý¶¯³ÌÐò

Íê³ÉÇý¶¯³ÌÐòµÄÉèÖúó £¬ÎÒÃÇ¿ÉÒÔʹÓÃAutotoolsÀ´¹¹½¨Çý¶¯³ÌÐò¡£

Ê×ÏÈ £¬ÎÒÃÇÐèÒªÔËÐÐautoreconfÏÂÁîÀ´ÌìÉú¹¹½¨¾ç±¾¡£ÔÚÇý¶¯³ÌÐòĿ¼Ï £¬Ö´ÐÐÒÔÏÂÏÂÁ

$ autoreconf -vfi

µÇ¼ºó¸´ÖÆ

½ÓÏÂÀ´ £¬ÎÒÃÇ¿ÉÒÔʹÓÃconfigure½ÅÔ­À´ÉèÖù¹½¨ÇéÐΡ£ÔÚÇý¶¯³ÌÐòĿ¼Ï £¬Ö´ÐÐÒÔÏÂÏÂÁ

$ ./configure

µÇ¼ºó¸´ÖÆ

configure¾ç±¾½«»á¼ì²éϵͳÇéÐÎ £¬²¢ÌìÉúÒ»¸öÃûΪMakefileµÄ¹¹½¨Îļþ¡£

×îºó £¬ÎÒÃÇ¿ÉÒÔʹÓÃmakeÏÂÁîÀ´±àÒëÇý¶¯³ÌÐò¡£ÔÚÇý¶¯³ÌÐòĿ¼Ï £¬Ö´ÐÐÒÔÏÂÏÂÁ

$ make

µÇ¼ºó¸´ÖÆ

ÈôÊÇÒ»ÇÐ˳Ëì £¬makeÏÂÁ»áÌìÉúÒ»¸ö¿ÉÖ´ÐеÄÇý¶¯³ÌÐò¡£

×°ÖÃÇý¶¯³ÌÐò

Íê³ÉÇý¶¯³ÌÐòµÄ¹¹½¨ºó £¬ÎÒÃÇ¿ÉÒÔʹÓÃmake installÏÂÁîÀ´×°ÖÃÇý¶¯³ÌÐò¡£

ÔÚÇý¶¯³ÌÐòĿ¼Ï £¬Ö´ÐÐÒÔÏÂÏÂÁ

$ make install

µÇ¼ºó¸´ÖÆ

ĬÈÏÇéÐÎÏ £¬Çý¶¯³ÌÐò½«»á×°Öõ½ÏµÍ³µÄĬÈÏ·¾¶Ï¡£ÈôÊÇÐèÒªÖ¸¶¨ÆäËû×°Ö÷¾¶ £¬¿ÉÒÔÐÞ¸Äconfigure.acÎļþÖеÄAC_PREFIX_DEFAULTºê½ç˵¡£

×ܽá

ʹÓÃAutotoolsÀ´ÉèÖᢹ¹½¨ºÍ×°ÖÃLinuxÇý¶¯Ä£¿éÊÇÒ»ÖÖÀû±ã¿ì½ÝµÄÒªÁì¡£±¾ÎÄÏÈÈÝÁËʹÓÃAutotoolsµÄ»ù±¾°ì·¨ £¬²¢¸ø³öÁËһЩʾÀý´úÂ롣ʹÓÃAutotools¿ÉÒÔ¼«´óµØ¼ò»¯Çý¶¯³ÌÐòµÄ¹¹½¨ºÍ×°ÖÃÀú³Ì £¬Ìá¸ß¿ª·¢Ð§ÂÊ¡£

ʾÀý´úÂë

ÏÂÃæÊÇÒ»¸ö¼òÆÓµÄÇý¶¯³ÌÐòʾÀý´úÂ룺

#include <linux/init.h>
#include <linux/module.h>
#include <linux/kernel.h>

MODULE_LICENSE("GPL");

static int __init mydriver_init(void)
{
    printk(KERN_INFO "Hello, mydriver!
");
    return 0;
}

static void __exit mydriver_exit(void)
{
    printk(KERN_INFO "Goodbye, mydriver!
");
}

module_init(mydriver_init);
module_exit(mydriver_exit);

µÇ¼ºó¸´ÖÆ

ÒÔÉÏ´úÂë½ç˵ÁËÒ»¸ö¼òÆÓµÄÇý¶¯³ÌÐò £¬µ±¼ÓÔظÃÇý¶¯Ê± £¬»áÊä³ö”Hello, mydriver!” £¬µ±Ð¶ÔظÃÇý¶¯Ê± £¬»áÊä³ö”Goodbye, mydriver!”¡£

ÒÔÉϾÍÊÇʹÓÃAutotools¹¹½¨LinuxÇý¶¯Ä£¿éµÄÉèÖü¼ÇɵÄÏêϸÄÚÈÝ £¬¸ü¶àÇë¹Ø×¢±¾ÍøÄÚÆäËüÏà¹ØÎÄÕ£¡

ÃâÔð˵Ã÷£ºÒÔÉÏչʾÄÚÈÝȪԴÓÚÏàÖúýÌå¡¢ÆóÒµ»ú¹¹¡¢ÍøÓÑÌṩ»òÍøÂçÍøÂçÕûÀí £¬°æȨÕùÒéÓë±¾Õ¾ÎÞ¹Ø £¬ÎÄÕÂÉæ¼°¿´·¨Óë¿´·¨²»´ú±í尊龙凯时人生就是搏ÂËÓÍ»úÍø¹Ù·½Ì¬¶È £¬Çë¶ÁÕß½ö×ö²Î¿¼¡£±¾ÎĽӴýתÔØ £¬×ªÔØÇë˵Ã÷À´ÓÉ¡£ÈôÄúÒÔΪ±¾ÎÄÇÖÕ¼ÁËÄúµÄ°æȨÐÅÏ¢ £¬»òÄú·¢Ã÷¸ÃÄÚÈÝÓÐÈκÎÉæ¼°ÓÐÎ¥¹«µÂ¡¢Ã°·¸Ö´·¨µÈÎ¥·¨ÐÅÏ¢ £¬ÇëÄúÁ¬Ã¦ÁªÏµ尊龙凯时人生就是搏ʵʱÐÞÕý»òɾ³ý¡£

Ïà¹ØÐÂÎÅ

ÁªÏµ尊龙凯时人生就是搏

18523999891

¿É΢ÐÅÔÚÏß×Éѯ

ÊÂÇéʱ¼ä£ºÖÜÒ»ÖÁÖÜÎå £¬9:30-18:30 £¬½ÚãåÈÕÐÝÏ¢

QR code
sitemap¡¢ÍøÕ¾µØͼ