EXPORT_SYMBOL在另一个linux设备驱动编译成ko文件的时候找不到
时间: 2023-12-06 07:03:39 浏览: 258
嵌入式系统/ARM技术中的Linux内核中EXPORT_SYMBOL的用法
如果在另一个Linux设备驱动程序中使用了EXPORT_SYMBOL导出符号,但编译时找不到该符号,可能是以下原因导致的:
1. 缺少头文件:在使用EXPORT_SYMBOL导出符号的驱动程序中,可能缺少被导出符号的头文件。在另一个驱动程序中使用该符号时,也需要包含该头文件。因此,需要确保在使用被导出符号的驱动程序中包含了该头文件。
2. 编译顺序不正确:如果要使用一个驱动程序中导出的符号,需要在该驱动程序之前编译并加载。否则,当使用该符号的驱动程序被加载时,导出符号的驱动程序可能还没有被加载,从而找不到该符号。因此,需要确保导出符号的驱动程序先于使用该符号的驱动程序被编译并加载。
3. 符号命名冲突:如果多个驱动程序中使用了相同的符号名称,可能会导致符号命名冲突,从而导致编译错误。因此,需要确保在所有驱动程序中使用唯一的符号名称。
4. 编译参数不正确:在编译驱动程序时,需要正确设置编译参数,以便编译器能够找到导出符号的驱动程序。通常需要在Makefile文件中添加符号导出驱动程序的路径。
如果以上方法都无法解决问题,可以使用objdump命令查看编译后的KO文件中是否包含需要导出的符号。如果未找到该符号,说明导出驱动程序中的EXPORT_SYMBOL宏可能存在问题,需要检查导出驱动程序中符号导出的代码。
阅读全文