最近手上是的工作不多,閒的慌,就想弄個linux玩玩
裝的是vm + linux (redhat9 ) 2。4。20-8 的核心
下面是我實現核心模組編譯平台的筆記,現在記錄下來希望對碰到和我一樣問題的朋友有幫助。
首先vi hello.c
原程式網上的個篇pdf文件
#define module
#include
int init_module(void)
void cleanup_module(void)
gcc –c hello.c
出現下面的提示
hello.o: kernel-module version mi**atch
hello.o was compiled for kernel version 2.4.20
while this kernel is version 2.4.20-8.
按文件修改, 是因為 核心和模組版本不一致
修改方法: /usr/include/linux/version.h 裡的定義 2.4.20 改為 2.4.20-8
重新編譯,正常了
然後in**od ./hello.o出現了第二個問題:
網上搜尋資料,
於是知道了,在原程式中加入module_license("gpl");
int init_module(void)
在編譯後,然後 in**od ./hello.o
沒有出現文件描述的那樣,在終端顯示 「hello world」
要執行命令:
dmesg
在最下面顯示
hello,world!
rmmod hello 後
再dmesg,顯示
goodbye cruel world
檢視模組載入是否成功
$cat /proc/modules
或可以用
l**od
從中可以看到hello 這個模組,這就是我載入的。
現在看來,程式很簡單,非常簡單地,但對於乙個linux 的layman來說, 哀,難呀
做了這麼多年嵌入開發,各種型號的mcu,arm用了是不少,但都是裸奔的, 跑過一次wince,後來專案還停了,也在朋友那弄個44b0的開發板玩過vxworks,. linux 這個卻從未接觸過地, 路還漫長的說,還好,興趣和積極性沒有被打滅 哈哈
Linux菜鳥入門級命令大全
linux菜鳥入門級命令大全 eg man ls 就可以檢視ls相關的用法 注 按q鍵或者ctrl c退出,在linux下可以使用ctrl c終止當前程式執行。2.ls 檢視目錄或者檔案的屬 列舉出任一目錄下面的檔案 eg ls usr man ls l a.d表示目錄 directory 如果是乙...
Linux 菜鳥入門級命令大全
2.ls 檢視目錄或者檔案的屬 列舉出任一目錄下面的檔案 eg ls usr man ls l a.d表示目錄 directory 如果是乙個 表示是檔案,如果是l則表示是乙個連線檔案 link b.表示檔案或者目錄許可許可權.分別用可讀 r 可寫 w 可執行 x 3.cp 拷貝檔案 eg cp f...
經典 Linux菜鳥入門級命令大全
2.ls 檢視目錄或者檔案的屬 列舉出任一目錄下面的檔案 eg ls usr man ls l a.d表示目錄 directory 如果是乙個 表示是檔案,如果是l則表示是乙個連線檔案 link b.表示檔案或者目錄許可許可權.分別用可讀 r 可寫 w 可執行 x 3.cp 拷貝檔案 eg cp f...