免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 5596 | 回复: 2
打印 上一主题 下一主题

[其他] GCC 4.8.0 编译内核失败 [复制链接]

论坛徽章:
1
拜羊年徽章
日期:2015-03-03 16:15:43
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2013-08-19 07:01 |显示全部楼层 |倒序浏览

用GCC 4.8.0 优化等级 O2编译驱动, 只要有除法运算就有下面的连接错误:

undefined reference to `__aeabi_uldivmod'
make: *** [.tmp_vmlinux1] Error 1

用GCC 4.8.0 优化等级 O0编译时,由头文件过不了:
include/linux/rcupdate.h: In function '__kfree_rcu':
include/linux/rcupdate.h:808:2: error: size of unnamed array is negative
  BUILD_BUG_ON(!__builtin_constant_p(offset));
  ^
Error 1
试了一些网上的办法,如设置变量为volatile防止优化,设置局部函数优化等级为O0,都去不掉上面的连接错误
不知是否有人遇到同样的问题,谢谢!

论坛徽章:
1
拜羊年徽章
日期:2015-03-03 16:15:43
2 [报告]
发表于 2013-08-19 19:47 |显示全部楼层
回复 2# 瀚海书香
Kernel 3.2.43 , ARM
第一个问题: compile with -O2,错误是由于自己的驱动里用了除法
第二个问题: compile with -O0,错误是由于官方提供的头文件。网上有一些办法如何解决;但我不想动这些官方提供的头文件。kernel用-O0来编译是过不了的;我只是想把自己驱动文件用-O0编译, 但还是避免不了rcu的头文件问题
问题应该出在GCC上,以前我用GCC版本没有这样的问题,gcc或libgcc配置有问题?



   

论坛徽章:
1
拜羊年徽章
日期:2015-03-03 16:15:43
3 [报告]
发表于 2013-10-13 10:59 |显示全部楼层
回复 7# arm-linux-gcc
很抱歉回复有点晚。
你说的很对。 u32没问题,只有我用u64的变量作有关的除法时才有那个错误。改成u32问题就没有了

   
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP