作者blair0 (iNeEdmOretIme)
看板LinuxDev
標題Re: [問題] 請問2.4跟2.6的makefile寫法的不同
時間Tue Dec 12 17:23:45 2006
※ 引述《egglet (拒收作業)》之銘言:
: kernel2.4 和 kernel 2.6接受的模組格式不一樣
: kernel 2.4 收 .o即可,但在 kernel 2.6 改收 .ko
: 因此 Makefile上的寫法就會有小小的不同
: 在下達 make 指令時同時產生 .o ,.ko,.mod.c ,.mod.o 這些檔案
: 最快的方式,就是把 Makefile 重寫,但其實也不用重頭到尾自己寫
: 我是直接參考O'REILLY 的 Linux 驅動程式 第三版範例中的Makefile並改成自己要用的
: 範例下載:http://www.oreilly.com.tw/product_linux.php?id=a184
: 可以參考misc-modules 資料夾底下的 Makefile 及 最外層的 Makefile
: 順便提醒一下,書中範例中(Makefile)的 KERNELDIR 是指向你放 kernel source的地方
: 如果你放的地方跟書中範例的不一樣時,要記得改成自己的,或者將 kernel source
: 放在跟書中範例一樣的地方
謝謝e大指教
不過因為我主要是要產生clnkapi.a這個檔案
而我的source tree裏面沒有clnkapi.c這個檔,看原本Makefile的寫法
似乎就是合併另外3個.o來生出這個.a
在這個範例裏面我還是不懂要如何做到...orz
還有一個問題,如果依照範例的作法來make的話會跑出一個從沒看過的錯誤訊息:
arm-linux-ld: ERROR: drivers/net/moca/host/Ethernet/built-in.o uses hardware
FP, whereas drivers/net/built-in.o uses software FP
arm-linux-ld: failed to merge target specific data of file
drivers/net/moca/host/Ethernet/built-in.o
FP我查了一下似乎跟MMU有關,我的CPU是有MMU的,所以應該是用hardware FP吧?
可是他竟然說drivers/net/built-in.o是用software FP
請問這該怎麼解決呢?
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 61.31.22.121
推 tseng1129:跟你的toolchain有關係 , 與MMU沒有關係 12/12 20:35
→ tseng1129:我編譯bootloader也遇過相同的訊息 12/12 20:36
推 TroyLee:你要弄得應該不是 kernel module 吧? 12/12 20:43
推 gingei:這問題要從toolchain下手..我之前是這樣解決的.. 12/12 21:19
推 blair0:toolchain阿~ 大工程...囧rz... 12/12 22:02
推 egglet:啊..對不起啊..我沒有把文章看清楚..害你白忙一場 12/12 22:23
→ egglet:請問一下..你是在PC上編譯好程式在放到ARM的平台上執行嗎 12/12 22:24
推 blair0:是的是的 用的是snapgear3.3.0 12/12 22:50
→ egglet:我之前是把makefile中的AR(ar)改為arm-linux-ar 就可以了 12/12 22:53
推 egglet:不過我的makefile檔是利用./configure 產生的 12/12 22:56
→ egglet:嗯!修正一下..把AR指向自己arm-linux-ar的位置 12/12 23:25
→ egglet:或者是己產生.O 將目錄切換到.O下..執行arm-linux-ar 指令 12/12 23:28
→ egglet:arm-linux-ar cru XXX.a XXX.o XXXX.o (XXX表檔名) 12/12 23:30
推 blair0:就是這個啦! 謝謝謝謝 <(_ _)> 12/13 10:19