第一次編譯模組總結

2021-05-11 07:20:25 字數 2726 閱讀 6816

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。於是我就興高采烈的雙擊開啟,公升級專案,然後當然是彈出失敗提示了,果然開啟方式不對...