- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
我正在尝试编译“hello world”内核模块的示例,在 ubuntu 11.04、内核 3.2.6、gcc 4.5.2 和 fedora 16、内核 3.2.7、gcc 4.6.7 上发现问题。
代码:
#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);
编译:
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/中没有名为 'asm' 的文件夹,而是 'asm-generic';所以我将“asm”软链接(soft link)到“asm-generic”,并编译成功:
这次的错误是:
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
最佳答案
obj-m += hello.o
all:
make -C /lib/modules/$(shell uname -r)/build M=$(PWD) modules
clean:
make -C /lib/modules/$(shell uname -r)/build M=$(PWD) clean
是构建模块的正确方法,请参阅 kbuild documentation
要查看编译器调用之间的差异,您可以
cat /lib/modules/$(shell uname -r)/build/Makefile
并分析输出
关于linux - 模块编译 : asm/linkage. h 文件未找到,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9492559/
作者在以下段落中对“外部链接”和“C 语言链接”的含义是什么,摘自[1]。 “extern C 声明有两种不同的形式:上面使用的 extern C 和 extern C { … }大括号之间的声明。第
这段代码合法吗? extern "C" typedef void (ft_blah_c)(); /*extern "C++"*/ typedef void (ft_blah_cpp)(); exter
我在 R 包 RecordLinkage 中使用 compare.linkage 函数, 得到一个我知道是错误的结果,所以我知道我误解了一些东西。 我在 x64 Windows 上使用 R 3.2.3
在标准中它说: When a name has internal linkage , the entity it denotes can be referred to by names from ot
#include int x=13; // forcing space allocation int x; int main(){ printf("%d\n",x); } 上面的代码可以编译,但下
我在我的DirectX 11程序中添加了一个几何着色器(一个非常简单的着色器)。我已经写了顶点和像素着色器,它们按预期工作-没有错误,没有警告。着色器也很简单。顶点着色器是: cbuffer PerA
我有一个 pandas MultiIndex 对象: In [0]: index Out[0]: MultiIndex(levels=[[1, 2, 3, 8], [10, 11]],
3.5 [basic.link] N4567 的第 8 段说 ... A type is said to have linkage if and only if: it is a class or e
我正在尝试创建一个程序,该程序接收整数值并使用 atoi 将它们转换为 2 的补码整数,并确定进行了哪种类型的转弯。这是我的代码: #include #include int turn(int t
在文件范围内,我可以使用初始化(静态)变量的前向声明。存在循环依赖。 s[0]指的是count的地址。 count 是指 s 中的项目数。 struct s { int *a; }; static i
我在 clang 和 VC++ 中收到编译良好且无警告的代码的 gcc 警告,因此我假设它是特定于 gcc 的。这是代码: namespace myns { using TokenList = s
我用 C-ABI 接口(interface)用 X 语言编写了 dll。我想在我的 C++ 程序中使用这个 C-ABI。 我在main.cpp中这样写: extern "C" { struct Foo
我浏览了 Crockford 的视频并发现了 Object() 链接主题。 我没有得到Object()链接和赋值之间的确切区别。 有人可以澄清一下这个问题吗? 下面是在Chrome浏览器中执行时的代码
我想转发声明一个 const 变量而不给它外部链接。然而,在我看来,这是不可能的,因为 extern 关键字同时意味着“这具有外部链接”和“这是一个变量声明,而不是定义”,而我无法得到一个没有其他:
假设我们有如下的 X 矩阵: [[9 0] [1 4] [2 3] [8 5]] 然后, from scipy.cluster.hierarchy import linkage Z = linkage
目前我正在使用 C++ 制作一个 dll 函数。之后,我使用 DllImport 将此 dll 导入到我的 C# 项目中。在我的 C++ 项目中,我在第一次构建过程中收到警告 C4190。 Warni
api中错误的地方: #define DLLEXPORT extern "C" __declspec(dllexport) DLLEXPORT int CAnyseeUSBTVControllerDl
我正在尝试编译“hello world”内核模块的示例,在 ubuntu 11.04、内核 3.2.6、gcc 4.5.2 和 fedora 16、内核 3.2.7、gcc 4.6.7 上发现问题。
我创建了一个基于 this question 的概念检查类其目的是确保给定类具有名为 baseUnitConversionFactor 的静态成员函数。该类编译并适用于 msvc2013,但它不会在
在我的控制台应用程序中,我使用的是 STL map 。当我使用 visual studio 2012 编译它时,出现编译期间未找到 map 的错误。 Error 1 error LNK2001
我是一名优秀的程序员,十分优秀!