启用Android可加载模块

时间:2014-03-28 21:57:08

标签: android kernel

我正在尝试编译内核(Goldfish)以便稍后插入一些模块。我知道我需要启用模块支持,模块加载和卸载。我正在使用OSX Mavericks。

到目前为止,我已经从git中检出了金鱼,并做了以下工作:

make ARCH=arm goldfish_armv7_defconfig

没有问题。现在我做的时候:

make ARCH=arm CROSS_COMPILE=/Volumes/untitled/WORKING_DIRECTORY/prebuilts/gcc/darwin-x86/arm/arm-eabi-4.6/bin/arm-eabi- menuconfig

我得到以下内容:

  

ld:找不到架构x86_64的符号   clang:错误:链接器命令失败,退出代码为1(使用-v查看调用)   make [1]: * [scripts / kconfig / mconf]错误1   make:* [menuconfig]错误2

有没有办法可以用另一种方式启用模块?也许进入文件并手动完成?

如果我刚刚运行(我应该运行以获得zImage):

make ARCH=arm SUBARCH=arm CROSS_COMPILE=/Volumes/untitled/WORKING_DIRECTORY/prebuilts/gcc/darwin-x86/arm/arm-eabi-4.6/bin/arm-eabi -j16

内核编译,我可以通过模拟器运行它,但显然我无法上传内核模块。

2 个答案:

答案 0 :(得分:0)

默认情况下,在android内核中禁用

模块加载。 在配置文件中使用CONFIG_MODULES = y启用它。

答案 1 :(得分:0)

打开脚本/ kconfig / lxdialog / check-lxdialog.sh

用这个

替换ldflags()
ldflags()
{
    for ext in so a dylib ; do
        for lib in ncursesw ncurses curses ; do
            #$cc -print-file-name=lib${lib}.${ext} | grep -q /
            #if [ $? -eq 0 ]; then
            if [ -f /usr/lib/lib${lib}.${ext} ]; then
                echo "-l${lib}"
                exit
            fi
        done
    done
    exit 1
}

现在make menuconfig应该有效。问题似乎是OS X上clang错误的结果。-print-file-name选项无法正常工作。

或者,您可以在文本编辑器中打开.config文件并设置

CONFIG_MODULES=y