×ðÁú¿­Ê±¹ÙÍøµÇ¼

ʹÓÃ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
ÍøÕ¾µØͼ