在Linux2.6核心(CentOS)中編譯核心模組的一個例子
使用的簡單測試記憶體原始檔hello.c:
-------------------------------------------------------------------------
#include <linux/module.h> /* Needed by all modules */
#include <linux/kernel.h> /* Needed for KERN_INFO */
#include <linux/init.h> /* Needed for the macros */
static int __init hello_start(void)
{
printk(KERN_INFO "Loading hello module...\n");
printk(KERN_INFO "Hello world\n");
return 0;
}
static void __exit hello_end(void)
{
printk(KERN_INFO "Goodbye Mr.\n");
}
module_init(hello_start);
module_exit(hello_end);
-------------------------------------------------------------------------
建立目錄demo/,進入demo目錄,把hello.c這個檔案放在裡面。
再建立一個Makefile檔案,內容如下:
obj-m = hello.o
KVERSION = $(shell uname -r)
all:
make -C /lib/modules/$(KVERSION)/build M=$(PWD) modules
clean:
make -C /lib/modules/$(KVERSION)/build M=$(PWD) clean
【必須注意】Makefile檔案的兩行make開頭的行,make前頭必須是一個Tab空格,不能是Space鍵的其它空格,也不能沒有空格。(由於排版問題網頁上覆制過去的可能必須對照這裡修正為正確的TAB空格)
升級CentOS到最新版本(我是在Xen的VPS下測試的)
yum -y update
可以發現,升級為了CentOS 5.8
然後,編譯:
make
會有一些提示行,編譯成功後,生成如下檔案:
hello.ko hello.mod.c hello.mod.o hello.o Module.markers Module.symvers
我們只需要其中的hello.ko,這個是核心模組檔案。
複製到核心模組的隨便一個目錄裡去:
cp hello.ko /lib/modules/2.6.18-308.1.1.el5xen/kernel/net/ipv4/
(上面這行裡2.6.18-308.1.1.el5xen,是版本相關,不同的版本內容不一樣)
更新modules.dep檔案執行:
depmod
然後,我們就可以使用modprobe或insmod命令載入它了:
modprobe hello
載入成功。
我們可以vi /var/log/messages 看到我們的hello核心獨立載入模組輸出的除錯資訊。
相關推薦
在Linux2.6核心(CentOS)中編譯核心模組的一個例子
使用的簡單測試記憶體原始檔hello.c: ------------------------------------------------------------------------- #include <linux/module.h> /* Needed by all mod
CentOS試編譯核心
// 環境:CentOS 6.8 ( 2.6.32-642.el6.x86_64 核心 ) 1.從 www.kernel.org 下載相應版本的核心打包檔案,我下載的是 linux-2.6.38.tar.xz 2.將核心打包檔案解壓到 /usr/src
centos中編譯安裝nginx+mysql +php(未完)
net conf ftw tar 解壓 ocs org sql nbsp 參考地址:http://www.cnblogs.com/htian/p/5728599.html 去官網找到PCRE,並下載http://www.pcre.org/wget ftp://ftp.csx
在Centos中編譯hadoop2.7.7
一、準備工作 環境:Centos系統 1、Jdk 1.8和Maven安裝不再贅述。 2、Protocol Buffer安裝 下載Protocol Buffer2.5.0的原始碼(https://github.com/protocolbuffers/protobuf/releases/down
centos中編譯安裝nginx並支援ssl
安裝編譯環境和必要的庫 [root@localhost ~]# yum -y install gcc gcc-c++ autoconf automake libtool make cmake [root@localhost ~]# yum -y install
在CentOS中編譯安裝VIM 7.3
在 CentOS 中編譯安裝 VIM 7.3 預設安裝的 Vim 不帶有多字元支援,所以不支援中文。無論是將 CentOS 本來的語系改為中文還是將 Vim 的語系設定改為中文,都不能正常顯示中文。為了在 Vim 中能夠正常處理中文,我們需要在編譯時指定 —enable-
從Linux核心映象中提取核心配置檔案
如果你是一個喜歡編譯核心的狂人,同時也是經常忘記將預設的.config檔案備份的懶傢伙,那麼下面的方法將會使你 的核心配置工作變得更輕鬆,從linux 2.6開始核心提供了一種將.config附加到映像檔案的方法,通過這種方法,核心 配置者可以不必備份當前的.config檔
linux下開發,解決cocos2d-x中編譯出現的一個小問題, undefined reference to symbol 'pthread_create@@GLIBC_2.2.5'
water span x86 code bject data- ace 技術分享 inux 解決cocos2d-x中編譯出現的一個小問題 對於cocos2d-x 2.×中編譯中,若頭文件裏引入了#include "cocos-ext.h",在進行C++編譯的時候會遇到例
iscsitarget 在Linux2.6.32核心上編譯 若干編譯錯誤與解決方法(備忘)
#make make -C usr make[1]: Entering directory `/work/iscsitarget-0.4.16/usr' cc -O2 -fno-inline -Wall -Wstrict-prototypes -g -I../include
openwrt 編譯核心模組中的配置問題
以 other.mk 中的iio 為例 對 KCONFIG下面的 define KernelPackage/iio-core SUBMENU:=$(OTHER_MENU) TITLE:=Industrial IO core KCONFIG:= \
編譯核心模組常見問題
分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!  
如何在CentOS 7中安裝核心標頭檔案
在本文中,我們將解釋如何使用預設包管理器從基本儲存庫中安裝CentOS / RHEL 7和Fedora發行版中的核心標頭檔案。 當您在CentOS系統上編譯自定義核心模組(如裝置驅動程式)時,您需要在系統上安裝核心標頭檔案,其中包括Linux核心的C標頭檔案。 核心標頭檔案在安裝或
Linux Export命令 以及 linux 怎麼檢視核心裡面是否編譯進了某個驅動(不是模組了的驅動),怎麼檢視
檢視核心已存在 驅動cat /lib/modules/$(uname -r)/modules.builtin 一、Windows 環境變數 1、在Windows 系統下,很多軟體安裝都需要配置環境變數,比如 安裝 jdk ,如果不配置環境變數,在非軟體安裝的目錄下執行javac 命令,將
5.Linux核心設計與實現 P39---linux2.6 CFS排程演算法分析(轉)
1.概述 CFS(completely fair schedule)是最終被核心採納的排程器。它從RSDL/SD中吸取了完全公平的思想,不再跟蹤程序的睡眠時間,也不再企圖區分互動式程序。它將所有的程序都統一對待,這就是公平的含義。CFS的演算法和實現都相當簡單,眾多的測試表明其效能也非常優越。
Linux核心編譯,模組尺寸變大的解決辦法
現象: 最近在研究Linux的裁剪定製,編譯核心的時候發現編譯後同樣的模組比以前核心版本的大好多,比如下面這個例子: [[email protected] ~]# find /lib/modules/ -name ext3.ko /lib/
初學者編譯Linux核心,最簡單ko模組
#include <linux/init.h> #include <linux/kernel.h> #include <linux/module.h> MODULE_LICENSE("GPL"); static int __init helloko_init() {/* K
linux 核心編譯驅動模組ko的配置以及載入模組解除安裝模組例項測試
linux 核心編譯驅動模組ko的配置以及載入模組、解除安裝模組例項測試一、要讓linux系統支援動態載入驅動模組必須先對linux 核心進行相關的配置,不然編譯不過,載入模組也會載入失敗甚至導致裝置重啟。1、勾選核心Enable loadable module suppor
詳解LikeLib區塊鏈架構中的核心模組和模組管理器
LikeLib模組提供了標準定義“LikeLibModule”,所有LikeLib的模組都循LikeLibModule模組定義。 LikeLib模組管理器負責管理所有模組,定義了模組載入/解除安裝、服務註冊等規範,凡是遵循LikeLibModule規範的擴充套件模組都可以通過模組管理器載入
利用CMake編譯核心模組
最近在做LDD書上的一些例子, 為了統一管理程式碼的編譯,使核心模組的編譯跟應用程式的編譯過程一致,決定使用CMake來做工程的編譯,編譯指令碼如下: cmake_minimum_required(VERSION 2.8) project(ldd) set(K
Linux 下面編譯核心模組的 方法
(1) 選擇好你的核心版本,核心模組經常是和核心版本緊密相關的,建議儘量選擇高核心的版本,否則有可能會遇到很大的問題。 (2) 下載核心程式碼到/usr/src/kernel/目錄。如果有了,則不用下載。 (3) mkdir -p /lib/modules/3.10.102