Compile Linux Kernel Modules
ÎÒÕýÔÚѧϰдlinux device driver for embedded system.
ÎÒÓÐÒ»¸ölinuxǶÈëʽÉ豸£¬Ò²ÓÐÕâ¸öÉ豸µÄlinuxÔ´´úÂë¡£Ò²ÓÐcross compiler tool chain.
µÚÒ»²½£¬¾ÍÊÇдһ¸ö¼òµ¥µÄhelloÄ£¿é£¬È»ºó×°µ½É豸ÖС£ÒÔÑéÖ¤ÎÒÕâ¸ö¿ª·¢»·¾³¡£
ÔÚÍøÉÏËÑË÷ÁËһϣ¬ how to cross compile linux device driver
·¢ÏÖÔÚlinux´úÂë¸ùĿ¼µÄMakefileÖÐÓйØÓÚcross compileµÄÃèÊö
# Cross compiling and selecting different set of gcc/bin-utils
# ---------------------------------------------------------------------------
#
# When performing cross compilation for other architectures ARCH shall be set
# to the target architecture. (See arch/* for the possibilities).
# ARCH can be set during invocation of make:
# make ARCH=ia64
# Another way is to have ARCH set in the environment.
# The default ARCH is the host where make is executed.
# CROSS_COMPILE specify the prefix used for all executables used
# during compilation. Only gcc and related bin-utils executables
# are prefixed with $(CROSS_COMPILE).
# CROSS_COMPILE can be set on the command line
# make CROSS_COMPILE=ia64-linux-
# Alternatively CROSS_COMPILE can be set in the environment.
# Default value for CROSS_COMPILE is not to prefix executables
# Note: Some architectures assign CROSS_COMPILE in their arch/*/Makefile
Ö»ÒªÖ¸¶¨ARCHºÍCROSS_COMPILE¾Í¿ÉÒÔÁË¡£
ÔÚÎÒµÄÕâ¸öMakefileÖУ¬ÒѾָ¶¨ÁËARCH=arm£¬CROSS_COMPILE=arm-linux-
ÒòΪÔÚ±àÒëmoduleµÄʱºò£¬Ê¹ÓõÄÊÇÄں˹¹Ôìϵͳ£¬Ò²¾ÍÊÇʹÓõÄÉÏÃæËù˵µÄÕâ¸öÔÚÄÚºËÔ´Âë¸ùĿ¼µÄMakefile¡£ËùÒÔÎҾͲ»ÐèÒªÔÚÎÒµ÷ÓÃmakeµÄÃüÁîÐÐÖÐÖ¸¶¨ARCHºÍCROSS_COMPILEÁË¡£
ÓÃÀ´²âÊÔµÄhelloÄ£¿éµÄÔ´ÂëÀ´×Ô http://www.cyberciti.biz/tips/compiling-linux-kernel-module.html
hello.c
#include <linux/module.h> /* Needed by all modules */
#include <linux/kernel.h> /* Needed for KERN_INFO */
#include <linux/init.h> /* Needed for the macros */
static int __init hello_start(void)
{
printk(KERN_INFO "Loading hello module...\n");
printk(KERN_INFO "Hello world\n");
return 0;
}
static void
Ïà¹ØÎĵµ£º
ÓÉÓÚ¹¤×÷ÐèÒªÏÖÔÚ¿ªÊ¼´Óͷѧϰlinux£¬ÏÂÃæÏȼǼamlogic openlinux°²×°²½Öè¡££¨Ç°ÌáÊǰ²×°ÁËÐéÄâ»ú£©
Amlogic open linux ±àÒë»·¾³°²×°
Ò»¡¢gcc¹¤¾ßµÄ°²×°
1¡¢´ÓAmlogicÍøÕ¾ÉÏÏÂÔØgcc¹¤¾ß
ÔÚÏÂÃæÏÂÔØIndex of /download/linux/gnutools
gnutools-arc2.2-p4-ubuntu-9.04-2010- ......
½ø³ÌÀàËÆÓÚÈËÉú£ºËüÃDZ»²úÉú£¬Óлò¶à»òÉÙÓÐЧµÄÉúÃü£¬¿ÉÒÔ²úÉúÒ»¸ö»ò¶à¸ö×Ó½ø³Ì£¬×îÖÕ¶¼ÒªËÀÍö¡£Ò»¸ö΢СµÄ²îÒìÊǽø³ÌÖ®¼äûÓÐÐÔ±ð²îÒ엗ÿ¸ö½ø³Ì¶¼Ö»ÓÐÒ»¸ö¸¸Çס£ÄÇô£¬²Ù×÷ϵͳÓÐÒ»¸öÖØÒªµÄ¸ÅÄî——Ị̈߳¬ÔÚLinuxÉÏÊÇÔõôʵÏÖµÄÄØ£¿¿ÉÒÔÃ÷È·µÄ¸æËßÄ㣬Linux²¢Ã»ÓÐÏß³ÌÕâ¸ö¸ÅÄî¡£ºÇºÇ£¬ÊDz»ÊÇLinuxº ......
ÏßÐÔ—ÎïÀíµØÖ·µÄת»»£¬¿É½«ÆäÒâÒåÀ©Õ¹ÎªÔÊÐí½«Ò»¸öÏßÐÔµØÖ·±ê¼ÇΪÎÞЧ£¬¶ø²»ÊÇʵ¼ÊµØ²úÉúÒ»¸öÎïÀíµØÖ·¡£ÓÐÁ½ÖÖÇé¿ö¿ÉÄÜʹҳ±»±ê¼ÇΪÎÞЧ£ºÆäÒ»ÊÇÏßÐÔµØÖ·ÊDzÙ×÷ϵͳ²»Ö§³ÖµÄµØÖ·£»Æä¶þÊÇÔÚÐéÄâ´æ´¢Æ÷ϵͳÖУ¬ÏßÐÔµØÖ·¶ÔÓ¦µÄÒ³´æ´¢ÔÚ´ÅÅÌÉÏ£¬¶ø²»ÊÇ´æ´¢ÔÚÎïÀí´æ´¢Æ÷ÖС£ÔÚǰһÖÖÇé¿öÏ£¬³ÌÐòÒò²úÉúÁËÎÞЧµØÖ·¶ø±ØÐë±»Ö ......
Ò»¡¢ÏÂÔØjpeg¿â
¶þ¡¢ÅäÖñàÒ룬Éú³ÉMakefileÎļþ¡£
#./configure --prefix=/usr/arm/arm-linux --exec-prefix=/usr/arm/arm-linux \
--enable-shared --enable-static
×¢Ò⣺prefixÊÇ×îºó°²×°Ê±¿â´æ·ÅµÄÎļþ£¬sharedÊDZàÒë³É¶¯Ì¬¿â£¬staticÊDZàÒë³É¾²Ì¬¿â
Èý¡¢ÐÞ¸ÄÉú³ÉµÄMakefile¡£
ʹÓÃgedit £Í£á£ë£å£æ£é£ì£å
½«CC ......
ʹÓùý³ÌÖеÄÐĵãº
Ò»¡¢½â³ýĿ¼ӳÉä¹ØÏµ
umount Ŀ¼¿ÉÒÔ½â³ý¹ØÁª¹ØÏµ
±ØÐëÏÈÔÚ¿Í»§¶Ëumount£¬È»ºóÔÚ·þÎñÆ÷¶ËÍ£Ö¹nfs·þÎñ£¬ÒÔ¼°ÐÞ¸Ä/etc/exports£¬·ñÔòµÄ»°»áµ¼ÖÂdf -hÎÞ·¨¹Ø±Õ
¶þ¡¢mount.nfs: Input/output error
½â¾ö:ÔÚ¿Í»§¶ËÒ²ÐèÆô¶¯portmap
Èý¡¢ÐÞ¸ÄÍê±Ï/etc/exportsÎļþÖ®ºó£¬¿ÉÒÔÖØÆônfs·þÎñ£¬Ò²¿ÉÒÔʹÓÃexp ......