netdoger 发表于 2013-09-14 17:33

请问:编译内核模块时的库在哪个目录?

我们在编译用户空间的应用程序时,都要用到库链接,
我想问编译内核模块时,需要的库在哪个目录?

wwxxxxll 发表于 2013-09-16 09:37

本帖最后由 wwxxxxll 于 2013-09-16 13:00 编辑

内核没有库的概率

用户空间的一个点o
# readelf -d a.o

Dynamic section at offset 0x4ac contains 20 entries:
Tag      Type                         Name/Value
0x00000001 (NEEDED)                     Shared library:
0x0000000c (INIT)                     0x8048250
0x0000000d (FINI)                     0x8048468
0x6ffffef5 (GNU_HASH)                   0x8048148
0x00000005 (STRTAB)                     0x80481b8
0x00000006 (SYMTAB)                     0x8048168

是可以看到库
你有readelf -d 驱动.o
什么也没有

内核开发的特点————某书
没有libc库
GNU C
没有内存保护机制
不要轻易在内核中使用浮点数
容积小且固定栈
同步和并发
可移植性的重要性

没有libc库的原因
主要是在于速度和大小

至于如何一个模块调用另一个模块的函数
形式上是通过EXPORT_SYMBOL_GPL()或EXPORT_SYMBOL()
实质可能是建立了依赖关系(这个是我不确定),

kernel359 发表于 2013-09-28 23:59

我个人感觉,内核当中,就是你需要用到那些功能,才会去写那些代码,能少则少,所以一般不会有什么库,当然有很多公用的头文件,大家都用得着的东西
页: [1]
查看完整版本: 请问:编译内核模块时的库在哪个目录?