Giter Site home page Giter Site logo

how-to-compile-kernel-module's Introduction

How to compile kernel module

How to compile a kernel module with/for another kernel

1- Download and Extract Android NDK(for example: http://mirrors.neusoft.edu.cn/android/repository/android-ndk-r13b-linux-x86_64.zip).
2- Download desired module source.
3- Create Makefile with below content:

VERSION = 2
PATCHLEVEL = 6
SUBLEVEL = 29
EXTRAVERSION =

obj-m := module_sourcecode.o
PWD := $(shell pwd)
default:
        $(MAKE) ARCH=arm CROSS_COMPILE=/home/path/to/androidnsk/android_platform/prebuilt/linux-x86/toolchain/arm-eabi-4.4.3/bin/arm-eabi- -C $(KERNEL_DIR) SUBDIRS=$(PWD) modules
clean:
        $(MAKE) -C $(KERNEL_DIR) SUBDIRS=$(PWD) clean

4- Execute make command.

A simple hello world kernel module:

#include <linux/module.h>  /* Needed by all modules */
#include <linux/kernel.h>  /* Needed for KERN_ALERT */

MODULE_LICENSE("GPL");
MODULE_AUTHOR("Drjacky, 2016");
MODULE_DESCRIPTION("Demo module");

int init_module(void){
   printk("<1>Hello World\n");

   // A non 0 return means init_module failed; module can't be loaded.
   return 0;
}

Note (Optional):
Add these helpful lines for all the times, to your .bashrc file:

export ANDROID_NDK=/home/drjacky/Desktop/DLz/android-ndk-r10e
export ANDROID_NDK_ROOT=/home/drjacky/Desktop/DLz/android-ndk-r10e
export ANDROID_SDK=/home/drjacky/Desktop/DLz/android-sdk-linux
export NDK=/home/drjacky/Desktop/DLz/android-ndk-r10e
export ANDROID_API_VERSION=android-14
export NDK_SYSROOT=/home/drjacky/Desktop/DLz/android-ndk-r10e/platforms/android-14/arch-arm
export TOOLCHAIN=/home/drjacky/Desktop/DLz/android-ndk-r10e/toolchains/arm-linux-androideabi-4.8/prebuilt/linux-x86_64
export ANDROID_TOOLCHAIN=/home/drjacky/Desktop/DLz/android-ndk-r10e/toolchains/arm-linux-androideabi-4.8/prebuilt/linux-x86_64
export adb=/home/drjacky/Desktop/DLz/android-sdk-linux/platform-tools
export android=/home/drjacky/Desktop/DLz/android-sdk-linux/tools
#export ndk-build=/home/drjacky/Desktop/DLz/android-ndk-r10e

And these to your /etc/environment file:

ANDROID_NDK="/home/drjacky/Desktop/DLz/android-ndk-r10e"
ANDROID_SDK="/home/drjacky/Desktop/DLz/android-sdk-linux"
NDK="/home/drjacky/Desktop/DLz/android-ndk-r10e"
ANDROID_API_VERSION="android-14"
export NDK_SYSROOT="/home/drjacky/Desktop/DLz/android-ndk-r10e/platforms/android-14/arch-arm"
TOOLCHAIN="/home/drjacky/Desktop/DLz/android-ndk-r10e/toolchains/arm-linux-androideabi-4.8/prebuilt/linux-x86_64"
adb="/home/drjacky/Desktop/DLz/android-sdk-linux/platform-tools"
android="/home/drjacky/Desktop/DLz/android-sdk-linux/tools"
##ndk-build="/home/drjacky/Desktop/DLz/android-ndk-r10e"

how-to-compile-kernel-module's People

Contributors

drjacky avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

Forkers

shuixi2013

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.