作者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
1F:推 tseng1129:跟你的toolchain有关系 , 与MMU没有关系 12/12 20:35
2F:→ tseng1129:我编译bootloader也遇过相同的讯息 12/12 20:36
3F:推 TroyLee:你要弄得应该不是 kernel module 吧? 12/12 20:43
4F:推 gingei:这问题要从toolchain下手..我之前是这样解决的.. 12/12 21:19
5F:推 blair0:toolchain阿~ 大工程...囧rz... 12/12 22:02
6F:推 egglet:啊..对不起啊..我没有把文章看清楚..害你白忙一场 12/12 22:23
7F:→ egglet:请问一下..你是在PC上编译好程式在放到ARM的平台上执行吗 12/12 22:24
8F:推 blair0:是的是的 用的是snapgear3.3.0 12/12 22:50
9F:→ egglet:我之前是把makefile中的AR(ar)改为arm-linux-ar 就可以了 12/12 22:53
10F:推 egglet:不过我的makefile档是利用./configure 产生的 12/12 22:56
11F:→ egglet:嗯!修正一下..把AR指向自己arm-linux-ar的位置 12/12 23:25
12F:→ egglet:或者是己产生.O 将目录切换到.O下..执行arm-linux-ar 指令 12/12 23:28
13F:→ egglet:arm-linux-ar cru XXX.a XXX.o XXXX.o (XXX表档名) 12/12 23:30
14F:推 blair0:就是这个啦! 谢谢谢谢 <(_ _)> 12/13 10:19