我想为安卓制作一个动态加载的内核模块。 我不想安装Linux,我只有Cygwin和安卓NDK。
我想为安卓制作一个动态加载的内核模块。 我不想安装Linux,我只有Cygwin和安卓NDK。
$ cd $NDK_HOME
$ find . | grep '\-gcc$'
./toolchains/arm-eabi-4.4.0/prebuilt/linux-x86/bin/arm-eabi-gcc
./toolchains/arm-linux-androideabi-4.4.3/prebuilt/linux-x86/bin/arm-linux-androideabi-gcc
注意,$NDK_HOME
是我安装 Android NDK 的位置。
第三步,您需要将 $NDK_HOME/toolchains/arm-eabi-4.4.0/prebuilt/linux-x86/bin
目录(或系统上它所在的地方)添加到您的 PATH 环境变量中。
然后您需要导出两个环境变量:
export ARCH=arm
export CROSS_COMPILE=arm-eabi-
arm-eabi-
前缀与我们在find
命令中看到的相同。当内核构建时,如gcc
和ld
等命令将带有此前缀。请注意,如果您正在为x86平台构建,则需要进行调整。我只为ARM构建了模块。)/proc/config.gz
,在内核源目录中运行了zcat config.gz > .config
,然后运行了make menuconfig && make
。)内核构建大师可能知道一些快捷方式,但我无法正确设置内核源目录以构建模块而不进行实际构建。(如果您的构建树中的内核与您的设备匹配,则不必实际更新内核,只需插入模块即可。)ARCH
和CROSS_COMPILE
,您的模块就应该构建成功!按照这个URL,Android开发者建议使用虚拟Ubuntu镜像而不是Cygwin。