ndk 編譯android核心模組無法載入 解決方法
阿新 • • 發佈:2019-02-03
使用 ndk r8 編譯cm的android核心,核心可以正常啟動,但無法載入無線模組
# insmod *
insmod: init_module 'bcm4329.ko' failed (No such file or directory)
# busybox insmod *
insmod: can't insert 'bcm4329.ko': unknown symbol in module, or unknown parameter
檢視核心日誌提示
<4>[ 5335.223480] bcm4329: Unknown symbol _GLOBAL_OFFSET_TABLE_ (err 0)
Google了一下,找到了兩種解決辦法
I get the same thing, 'arm-eabi-4.4.0/bin/arm-eabi-' seems to work fine though.
1、採用通用交叉編譯器編譯模組注意 用r5b以上的NDK編譯出來的核心模組會失敗(提示Unknown symbol _GLOBAL_OFFSET_TABLE_),直接影響是沒有WLAN,在Makefile改一下,對模組的編譯加上-fno-pic引數就可以了。 --- a/Makefile +++ b/Makefile @@ -325,7 +325,7 @@ CHECK = sparse CHECKFLAGS := -D__linux__ -Dlinux -D__STDC__ -Dunix -D__unix__ \ -Wbitwise -Wno-return-void $(CF) -MODFLAGS = -DMODULE +MODFLAGS = -DMODULE -fno-pic CFLAGS_MODULE = $(MODFLAGS) AFLAGS_MODULE = $(MODFLAGS) LDFLAGS_MODULE = -T $(srctree)/scripts/module-common.lds
2、模組新增 -fno-pic引數
電腦上正好有arm交叉編譯器,所以我採用的第一種方法
make modules CROSS_COMPILE=arm-linux- ARCH=arm -j 4
模組成功載入!