1:模組**:.c
#include
#include
#include
module_license("dual bsd/gpl");
static int hello_init(void)
static void hello_exit(void)
module_init(hello_init);
module_exit(hello_exit);
module_alias("mhwgo-hello");
2:makefile檔案:(只有一句)
obj-m :=helloworld.o
3:執行:
sudo make -c /usr/src/linux-headers-2.6.28-16/ m=$(pwd) modules4:
[root@liu-desktop linux26]#insmod hellomod.ko
[root@liu-desktop linux26]#lsmod |grep hellomod
lsmod |grep hellomod
[root@liu-desktop linux26]#rmmod hellomod
注意:如果出現下面錯誤,那應該是核心版本號對不上,version magic不對
insmod: error inserting 'hellomod.ko': -1 invalid module format
此時,你用sudo tail /var/log/messages
dec 19 13:42:29 localhost kernel: hellomod: version magic '2.6.24.2 smp mod_unload 686 4kstacks ' should be '2.6.27.7-134.fc10.i686 smp mod_unload 686 4kstacks '
總結: 1:
編譯所需的.config檔案可以從系統中直接拷(如命令:cp /boot/config-2.6.28-16 .config) 2:
可能會用到的命令如下:
sudo apt-get install build-essential
sudo apt-get install libncurses*
問題1:
error: kernel configuration is invalid.
include/linux/autoconf.h or include/config/auto.conf are missing.
run 'make oldconfig && make prepare' on kernel src to fix it.
make oldconfig && make prepare 這兩條命令的作用?
問題2:
執行:sudo make prepare
出現錯誤:
scripts/kconfig/conf -s arch/x86/kconfig
chk include/linux/version.h
upd include/linux/version.h
chk include/linux/utsrelease.h
upd include/linux/utsrelease.h
symlink include/asm -> include/asm-x86
make[1]: *** no rule to make target `kernel/bounds.c', needed by `kernel/bounds.s'. stop.
make: *** [prepare0] error 2
什麼原因?
可能原因:由於缺少檔案
問題3:
sudo apt-get install build-essential
orsudo apt-get install build-essential linux-headers-$(uname -r)
正在讀取軟體包列表... 完成
正在分析軟體包的依賴關係樹
正在讀取狀態資訊... 完成
現在沒有可用的軟體包 build-essential,但是它被其它的軟體包引用了。
這可能意味著這個缺失的軟體包可能已被廢棄,
或者只能在其他發布源中找到
e: 軟體包 build-essential 還沒有可供安裝的候選者
為什麼失敗?
解決:軟體源列表不齊全,可以更新軟體源。
問題4:
sudo apt-get install linux-source
sudo apt-get install glibc-source
作用?問題5:
*** unable to find the ncurses libraries or the
*** required header files.
*** 'make menuconfig' requires the ncurses libraries.
***
*** install ncurses (ncurses-devel) and try again.
***
make[1]: *** [scripts/kconfig/dochecklxdialog] error 1
make: *** [menuconfig] error 2
這是什麼問題?
原因:解決:軟體源列表不齊全,可以更新軟體源。
第一次總結
走上acm之路的奇葩起因 大一下學期過得太過渾渾噩噩,負罪感超標,想趁著暑假學點資料結構 c 什麼的,還聽說大二的程式設計實驗巨難,想著靠暑假集訓實驗不掛,真沒想過要出去比賽或者堅持兩年 也是自己比較low,感覺拿不到比賽機會 超沒追求的說。學校acm暑假集訓,因為是妹紙,所以零基礎教練也讓參加了 ...
第一次總結
這是第一次寫部落格,確實不知道寫什麼,就總結一下今天學到的吧。磁碟 記憶體 cpu 之間的關係 2.知道了它們的關係,我們來看資料結構 對資料的基本操作就是增刪改查,而它們可以分為順序結構和鏈式結構,陣列就是順序結構,我們可以通過下標來訪問它的每乙個元素。我們來看一下各個結構的時間複雜的 型別操作 ...
第一次編譯ffmpeg
今天開始玩ffmpeg了。下面就是實時記錄的隨筆 不要再問為什麼不用git,因為還不會 解壓之後是個資料夾 ffmpeg 2.8,裡面全是熟悉的sourcecode。然後我還看到了 mak檔案,開啟方式是vs2013。於是我就興高采烈的雙擊開啟,公升級專案,然後當然是彈出失敗提示了,果然開啟方式不對...