当前位置: 技术问答>linux和unix
如何编译一个包含用户级代码和内核级代码的程序
来源: 互联网 发布时间:2016-04-02
本文导语: 最近要编写一个用户层的函数,把它加到一个内核模块程序中。可当make的时候,错误提示找不到c库的头文件,例如不管将stdlib.h加到什么地方都提示找不到,这是怎么回事呢?另外怎么编写一个包含多个.c文件的makefi...
最近要编写一个用户层的函数,把它加到一个内核模块程序中。可当make的时候,错误提示找不到c库的头文件,例如不管将stdlib.h加到什么地方都提示找不到,这是怎么回事呢?另外怎么编写一个包含多个.c文件的makefile?这些.c文件里面又有内核代码又有用户级代码。谢谢回复!
|
用户层的程序 和 内核空间的程序 不是一回事, 最简单的例子 用户空间用printf,内核空间用printk
建议你看看Linux Device Driver 3rd的“2.3. Kernel Modules Versus Applications”这一节
如果是kernel空间的,到kernel里找个Makefile参考即可。
用户空间的Makefile的写法类似。
可以到网上搜Makefile的基本用法。
|
如果在LINUX系统下,如楼上所说:应用程序和内核需要分开编译,虽然可以用同一tools chain,但是应用程序接口一般不直接跟内核打交道的,中间会有Libc库进行了包装,你应该把Makefile什么的分开.
|
内核层的函数是通过EXPORT_SYSBOL出来的,用户层是基本的库函数。