I've build a Standard SDK using yocto bitbake angstrom-lxde-image -c populate_sdk
I made sure that the kernel sources are included in the SDK TOOLCHAIN_TARGET_TASK_append = "kernel-devsrc" After installing the generated SDK at my workstation (separate machine from my build host), I verified that the kernel sources are present In the directory where the SDK has been installed, the kernel subdirectory has been added. datawatt@O-LINUX-1:~/toolchain/sysroots/armv7at2hf-neon-angstrom-linux-gnueabi/usr/src$ tree -L 1 . ├── backfire ├── debug └── kernel 3 directories, 0 files Next I'm trying to build a simple LKM * First I source the environment setup script ********* I'm using this c-source: /** * @file hello.c * @author Derek Molloy * @date 4 April 2015 * @version 0.1 * @brief An introductory "Hello World!" loadable kernel module (LKM) that can display a message * in the /var/log/kern.log file when the module is loaded and removed. The module can accept an * argument when it is loaded -- the name, which appears in the kernel log files. * @see http://www.derekmolloy.ie/ for a full description and follow-up descriptions. */ #include <linux/init.h> // Macros used to mark up functions e.g., __init __exit #include <linux/module.h> // Core header for loading LKMs into the kernel #include <linux/kernel.h> // Contains types, macros, functions for the kernel MODULE_LICENSE("GPL"); ///< The license type -- this affects runtime behavior MODULE_AUTHOR("Derek Molloy"); ///< The author -- visible when you use modinfo MODULE_DESCRIPTION("A simple Linux driver for the BBB."); ///< The description -- see modinfo MODULE_VERSION("0.1"); ///< The version of the module static char *name = "world"; ///< An example LKM argument -- default value is "world" module_param(name, charp, S_IRUGO); ///< Param desc. charp = char ptr, S_IRUGO can be read/not changed MODULE_PARM_DESC(name, "The name to display in /var/log/kern.log"); ///< parameter description /** @brief The LKM initialization function * The static keyword restricts the visibility of the function to within this C file. The __init * macro means that for a built-in driver (not a LKM) the function is only used at initialization * time and that it can be discarded and its memory freed up after that point. * @return returns 0 if successful */ static int __init helloBBB_init(void){ printk(KERN_INFO "EBB: Hello %s from the BBB LKM!\n", name); return 0; } /** @brief The LKM cleanup function * Similar to the initialization function, it is static. The __exit macro notifies that if this * code is used for a built-in driver (not a LKM) that this function is not required. */ static void __exit helloBBB_exit(void){ printk(KERN_INFO "EBB: Goodbye %s from the BBB LKM!\n", name); } /** @brief A module must use the module_init() module_exit() macros from linux/init.h, which * identify the initialization function at insertion time and the cleanup function (as * listed above) */ module_init(helloBBB_init); module_exit(helloBBB_exit); ********** And this makefile: datawatt@O-LINUX-1:~/workspace-lkm/hello$ cat Makefile obj-m+=hello.o #KDIR := /lib/modules/$(shell uname -r)/build/ KDIR := $(SDKTARGETSYSROOT)/usr/src/kernel/ all: make -C $(KDIR) M=$(PWD) modules clean: make -C $(KDIR) M=$(PWD) clean *********** Next I start the build process, by executing make and I get an error which I can't fix: datawatt@O-LINUX-1:~/workspace-lkm/hello$ make make -C /home/datawatt/toolchain/sysroots/armv7at2hf-neon-angstrom-linux-gnueabi/usr/src/kernel/ M=/home/datawatt/workspace-lkm/hello modules make[1]: Entering directory '/home/datawatt/toolchain/sysroots/armv7at2hf-neon-angstrom-linux-gnueabi/usr/src/kernel' CC [M] /home/datawatt/workspace-lkm/hello/hello.o /bin/sh: scripts/basic/fixdep: No such file or directory scripts/Makefile.build:264: recipe for target '/home/datawatt/workspace-lkm/hello/hello.o' failed make[2]: *** [/home/datawatt/workspace-lkm/hello/hello.o] Error 1 Makefile:1387: recipe for target '_module_/home/datawatt/workspace-lkm/hello' failed make[1]: *** [_module_/home/datawatt/workspace-lkm/hello] Error 2 make[1]: Leaving directory '/home/datawatt/toolchain/sysroots/armv7at2hf-neon-angstrom-linux-gnueabi/usr/src/kernel' Makefile:8: recipe for target 'all' failed make: *** [all] Error 2 Any help is appreciated. Alberto Spin
-- _______________________________________________ yocto mailing list yocto@yoctoproject.org https://lists.yoctoproject.org/listinfo/yocto