看板 LinuxDev 關於我們 聯絡資訊
※ 引述《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