make-unrecognized ELF data encoding 0

在写完内核模块代码后,用make进行编译,遇到如下错误:

[root@localhost cache]# make
rm -f  /lib/modules/3.8.0/build/xx
ln -s /data/raid  /lib/modules/3.8.0/build/xx
make -C /lib/modules/3.8.0/build SUBDIRS=`pwd` CROSS_COMPILE="" modules
make[1]: Entering directory `/usr/src/linux-3.8'
  CC [M]  /data/raid/src/cache/xx1.o
  CC [M]  /data/raid/src/cache/xx2.o
  CC [M]  /data/raid/src/cache/xx3.o
  CC [M]  /data/raid/src/cache/xx4.o
  CC [M]  /data/raid/src/cache/xx5.o
  CC [M]  /data/raid/src/cache/xx6.o
  CC [M]  /data/raid/src/cache/xx7.o
unrecognized ELF data encoding 0: /data/raid/src/cache/xx7.o
make[2]: *** [/data/xx7.o] Error 1
make[1]: *** [_module_/data/xx] Error 2
make[1]: Leaving directory `/usr/src/linux-3.8`
make: *** [all] Error 2

这里可以确定的几个事实

  • 模块代码在修改过后是没有错误的
  • 换另一台相同配置的机器就能够编译通过
  • 编译之前已经使用make clean
  • 本模块代码全部删除,从其他机器拷过来编译也失败

最后找到解决办法:

>>ccache -C  #可以使用"ccache"查看对应用法
>>make clean
>>make       #编译成功!!!

但是很可惜,问题发生的具体原因未知,估计是在某次编译时发生了错误,导致ccache中一直存有记录,导致对应文件一直不被重新编译,当彻底清除缓存后就能够成功进行编译。

make还真是个神奇的工具,错误也是千奇百怪…

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值