gpt4 book ai didi

c - 让内核模块链接到的标准内核库在哪里?

转载 作者:太空狗 更新时间:2023-10-29 11:26:01 25 4
gpt4 key购买 nike

内核模块不能调用libc,因为libc运行在用户空间。
还有一些其他内核指定的 API,例如 printk() 可以使模块正常工作。
据我了解,libc 是几个标准 c 函数对象的集合。
它应该存在一个集合(或库)来包含几个内核标准函数对象。
所以我可以将我的内核模块与这些内核标准库链接起来工作,对吗?

简而言之,我的问题如下......

在用户空间:
aaa.o 链接 bbb.o 以调用 myfunc()
aaa.o 链接 libc.so 以调用 printf()

在内核空间:
aaa.ko 链接 bbb.ko 调用 myfunc() ?这是问题 1
aaa.ko 链接 xxx 调用 printk() ? xxx 叫什么,问题 2

谢谢!

最佳答案

内核模块只能调用内核函数(在内核的固定部分)。他们不会也不能使用任何外部库。

所以没有内核标准库(它是内核本身包含printk)。

从概念上讲,内核代码在 freestanding 中C的方言;它不使用任何 C 标准库函数(出于不明原因,Linux 内核代码未使用 -ffreestanding dialect option 编译为 gcc )

关于c - 让内核模块链接到的标准内核库在哪里?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22818842/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com