मैं "हैलो वर्ल्ड" कर्नेल मॉड्यूल, यूबंटू 11.04, कर्नेल 3.2.6, जीसीसी 4.5.2 और फेडोरा 16, कर्नेल पर मिली समस्याओं का संकलन करने की कोशिश कर रहा हूं 3.2.7, जीसीसी 4.6.7।मॉड्यूल संकलन: asm/linkage.h फ़ाइल नहीं मिली
कोड:
gcc -D__KERNEL__ -I /usr/src/linux/include/ -DMODULE -Wall -O2 -c hello.c -o hello.o
त्रुटि:
In file included from /usr/src/linux/include/linux/kernel.h:13:0, from /usr/src/linux/include/linux/cache.h:4, from /usr/src/linux/include/linux/time.h:7, from /usr/src/linux/include/linux/stat.h:60, from /usr/src/linux/include/linux/module.h:10, from hello.c:1: /usr/src/linux/include/linux/linkage.h:5:25: fatal error: asm/linkage.h: file not found
तो मैं में पाया/usr/src linux/शामिल/कोई फ़ोल्डर का नाम है/
#include <linux/module.h>
#include <linux/init.h>
MODULE_LICENSE("GPL");
static int __init hello_init (void)
{
printk("Hello module init\n");
return 0;
}
static void __exit hello_exit (void)
{
printk("Hello module exit\n");
}
module_init(hello_init);
module_exit(hello_exit);
साथ संकलित 'asm' लेकिन 'asm-generic'; तो मैं 'एएसएम-सामान्य' के लिए एक नरम कड़ी 'एएसएम' बनाया है, और agail संकलित:
इस समय त्रुटि थी:
In file included from /usr/src/linux/include/linux/preempt.h:9:0, from /usr/src/linux/include/linux/spinlock.h:50, from /usr/src/linux/include/linux/seqlock.h:29, from /usr/src/linux/include/linux/time.h:8, from /usr/src/linux/include/linux/stat.h:60, from /usr/src/linux/include/linux/module.h:10, from hello.c:1: /usr/src/linux/include/linux/thread_info.h:53:29: fatal error: asm/thread_info.h: file not found
तो मुझे एहसास हुआ कि मैं गलत था, लेकिन क्यों? T_T
करके निकाल सकते हैं मैं ubuntu, फेडोरा के साथ 3 मशीनों पर गिरी src फ़ोल्डर (3.2+) की जाँच है जोड़ सकते हैं और कर सकते हैं gentoo, उनमें से सभी फ़ोल्डर 'asm' नहीं है। तो मुझे लगता है कि यह कोई त्रुटि नहीं हो सकती है .. –
मैंने जो रेडहाट चेक किया है, उसमें '/ usr/src/kernels /.../ शामिल/asm'' asm-x86_64' का लिंक है। – ugoren