【问题标题】:Cross compile LKM module for Android platform交叉编译Android平台的LKM模块
【发布时间】:2012-05-16 02:16:30
【问题描述】:

出于工作原因,我需要为Android平台开发一个LKM。我不太确定如何交叉编译我的 AndroidModule.c 以及为此使用什么工具。我想我需要Android的源代码才能告诉编译器从那里链接库对吗? 我还需要下载适用于 Android 的 ARM 编译器。 我认为这三件事就足够了(C 语言中的 LKM 代码、Android 源代码、Android 的 ARM 编译器)。 问题是我找不到任何解释如何为 Android 编译 LKM 的教程。 我很高兴能获得更多关于它的信息。

【问题讨论】:

    标签: android linux-kernel


    【解决方案1】:

    这是我用来为 Android 构建模块的 makefile。 我假设你在某个地方有一份 linux 源代码的副本,并且你已经为你的手机构建了内核。 在您的模块目录中,我放置了一个像这样的 Makefile:

    ifneq ($(KERNELRELEASE),)
        obj-m := mymod.o
    else
        COMPILER ?=/pathtoandroid/prebuilt/linux-x86/toolchain/arm-eabi-4.4.0/bin/arm-eabi-
        CROSS_COMPILE ?=$(COMPILER)
        ARCH ?=arm
        KERNELDIR ?= /home/kernel/androidkerneldir/
        PWD := $(shell pwd)
        EXTRACFLAGS += -I$(PWD)/somedirectory/shomewhere
    default:
        $(MAKE) -C $(KERNEL_DIR) M=`pwd` ARCH=$(ARCH) CROSS_COMPILE=$(COMPILER) EXTRA_CFLAGS=$(EXTRACFLAGS) modules
    clean:
        rm *.o *.ko
    install:
        adb push mymod.ko /system/lib/modules
    

    这应该为你做。确保您对 /system 目录具有写入权限。

    【讨论】:

      【解决方案2】:

      试试底部的Android URL,它有关于如何构建源代码的详细说明。

      然后按照this URL 进行最终构建(这是用于梦想版本),我假设该过程也适用于其他版本。

      【讨论】:

        【解决方案3】:

        This 应该会有所帮助。

        要交叉编译模块,您需要内核源代码和 Android 工具链中的 ARM 编译器。你需要一个 Makefile 类似的东西

        obj-m:= AndroidModule.o
        
        all: module
        
        module:
            $(MAKE) -C $(KERNELSRC) SUBDIRS=$(PWD) modules
        clean:
            $(MAKE) -C $(KERNELSRC) SUBDIRS=$(PWD) clean
            @rm -f Module.symvers Module.markers modules.order
        

        然后将CROSS_COMPILE配置为ARM编译器,KERNELSRC配置为内核源码位置,然后调用make进行编译。这是我在 0xdriod 上使用的命令。

        CROSS_COMPILE=~/beagle-eclair/prebuilt/linux-x86/toolchain/arm-eabi-4.4.0/bin/arm-eabi- ARCH=arm KERNELSRC=~/kernel make
        

        【讨论】:

          猜你喜欢
          • 2019-07-22
          • 2022-01-03
          • 2019-09-27
          • 2011-08-24
          • 1970-01-01
          • 2011-03-28
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多