我正在尝试使用openwrt交叉编译工具链为Turris Omnia路由器构建内核模块rtl8192eu。一切看起来都很好,但是如果我设置了EXTRA_CFLAGS += -DCONFIG_IOCTL_CFG80211
,则无法插入模块。我需要该选项,否则我将无法控制wifi加密狗。但是模块本身会加载并识别未启用该标志的加密狗。
如果启用了标志CONFIG_IOCTL_CFG80211
,则insmod
失败,并显示
8192eu: Unknown symbol __ieee80211_get_channel (err 0)
8192eu: Unknown symbol cfg80211_connect_result
据我所知,cfg80211
导出“镜像”符号:
➜ cat /proc/kallsyms|grep -E 'ieee80211_get_channel|cfg80211_connect_result'
bf6bea08 T ieee80211_get_channel [cfg80211]
bf6e1010 t __cfg80211_connect_result [cfg80211]
由于该模块可以在相同来源的PC上编译并正常工作,并且PC上的导出符号与上述“镜像”符号匹配,因此我猜我确实为路由器错误地编译了该模块。也许是一些关联问题?