c - Linux 内核模式中的用户空间库 - 用于测试

标签 c linux

我知道你不应该这样做,这是不好的做法等等。但是是否可以在内核模块中包含一个 c 用户空间库?

我正在为我自己的目的编写模块来测试一些东西,它永远不会被其他人发布或使用。我只想快速破解,而不用担心好的做法。

(具体来说,我想使用 <stdint.h> 中包含的 gcc 提供的 __int128 数据类型)

谢谢

最佳答案

C 库首先是函数的集合,“用户空间”和“内核空间”之间没有真正的区别。然而,在内核空间中使用动态共享库是不可能的,因为没有合适的动态加载器。的确,加载kernel-module本身就是某种动态加载,但是模块本身不能依次加载另一个共享库。

但是,应该可以将代码从静态库 (.a) 链接到您的内核模块。然后这段代码成为内核模块本身不可分割的一部分,并且应该在内核空间和用户空间中工作,只要它不依赖于内核空间中不存在的外部符号(例如,尤其是 libc 的符号)。

关于c - Linux 内核模式中的用户空间库 - 用于测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42121881/

相关文章:

python - 在 UNIX 网络共享上从 Windows 创建硬链接(hard link)/符号链接(symbolic link)

linux - 如何确定程序试图打开哪些文件?

c - 在 C 中编写方法时遇到问题,包括指针和类型

c - 导入unistd.h后,编译器声明sbrk()是隐式声明。为什么是这样?

无法退出应该检查输入的值是否正确的循环

c - 在 C 中将 sigaction 与计时器一起使用时遇到问题

linux - 排序命令给出意外输出

python - 从 Windows 迁移到 Linux 时 WXPython 接口(interface)无法正常工作

linux - cd进入目录没有权限

将 4 字节数字复制到字符数组