我知道你不应该这样做,这是不好的做法等等。但是是否可以在内核模块中包含一个 c 用户空间库?
我正在为我自己的目的编写模块来测试一些东西,它永远不会被其他人发布或使用。我只想快速破解,而不用担心好的做法。
(具体来说,我想使用 <stdint.h>
中包含的 gcc 提供的 __int128 数据类型)
谢谢
最佳答案
C 库首先是函数的集合,“用户空间”和“内核空间”之间没有真正的区别。然而,在内核空间中使用动态共享库是不可能的,因为没有合适的动态加载器。的确,加载kernel-module本身就是某种动态加载,但是模块本身不能依次加载另一个共享库。
但是,应该可以将代码从静态库 (.a) 链接到您的内核模块。然后这段代码成为内核模块本身不可分割的一部分,并且应该在内核空间和用户空间中工作,只要它不依赖于内核空间中不存在的外部符号(例如,尤其是 libc 的符号)。
关于c - Linux 内核模式中的用户空间库 - 用于测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42121881/