当前位置: 技术问答>linux和unix
请问,insmod 是不是把驱动和lib下的库进行连接?
来源: 互联网 发布时间:2015-11-13
本文导语: 现在我加载一个驱动时报错有些API函数找不到,比如intb,outw等。 谢谢。 | 编译 gcc -O2 -DMODULE -D__KERNEL__ -c test.c 得到文件test.o就是一个设备驱动程序。 如果设备驱动程序有多个文件,把...
现在我加载一个驱动时报错有些API函数找不到,比如intb,outw等。
谢谢。
谢谢。
|
编译 gcc -O2 -DMODULE -D__KERNEL__ -c test.c
得到文件test.o就是一个设备驱动程序。
如果设备驱动程序有多个文件,把每个文件按上面的命令行编译,然后
ld -r file1.o file2.o -o modulename.
驱动程序已经编译好了,现在把它安装到系统中去。
insmod -f test.o
如果安装成功,在/proc/devices文件中就可以看到设备test,
你是不是没连接?
得到文件test.o就是一个设备驱动程序。
如果设备驱动程序有多个文件,把每个文件按上面的命令行编译,然后
ld -r file1.o file2.o -o modulename.
驱动程序已经编译好了,现在把它安装到系统中去。
insmod -f test.o
如果安装成功,在/proc/devices文件中就可以看到设备test,
你是不是没连接?
|
你可能没有引用内核头文件,注意:驱动不能引用C库的东西。
|
头文件的问题
|
内核模块和glibc库没有关系,他用到的函数都是内核源码树中的函数
|
outb, outw, outl, outsb, outsw, outsl, inb, inw, inl, insb, insw, insl, outb_p,
outw_p, outl_p, inb_p, inw_p, inl_p - port I/O
his family of functions is used to do low level port input and output.
You compile with -O or -O2 or similar. The functions are defined as inline macros, and will not be substituted in without optimization enabled, causing unresolved references at link time.
可见是内核模块编译时候的错误
outw_p, outl_p, inb_p, inw_p, inl_p - port I/O
his family of functions is used to do low level port input and output.
You compile with -O or -O2 or similar. The functions are defined as inline macros, and will not be substituted in without optimization enabled, causing unresolved references at link time.
可见是内核模块编译时候的错误