首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >避免使用kbuild在LKM中创建调试信息

避免使用kbuild在LKM中创建调试信息
EN

Stack Overflow用户
提问于 2013-11-20 16:02:54
回答 1查看 272关注 0票数 2

我正在从一个大的C文件(>50000 LOC)构建Linux内核模块(LKM)。这是一些生成的RAID计算代码。当我试图从kbuild构建它时,gcc消耗了所有的内存并崩溃,而手动调用gcc工作得很好。

在检查了手册中的对象文件后,我发现了gcc和kbuild中的对象文件,其中kbuild对象文件的大小是手册中的gcc对象的20-30倍(900k比30M)。原因是kbuild对象文件包含了包含大量数据的巨大部分debug_info。

下面是来自objdump -x的片段

代码语言:javascript
复制
RELOCATION RECORDS FOR [.debug_info]:
OFFSET           TYPE              VALUE 
0000000000000006 R_X86_64_32       .debug_abbrev
000000000000000c R_X86_64_32       .debug_str+0x0000000000000c41
0000000000000011 R_X86_64_32       .debug_str+0x0000000000000e26
0000000000000015 R_X86_64_32       .debug_str+0x0000000000000544
0000000000000019 R_X86_64_64       .text 
0000000000000021 R_X86_64_64       .text+0x0000000000060957
0000000000000029 R_X86_64_32       .debug_line
0000000000000030 R_X86_64_32       .debug_str+0x0000000000000b78
0000000000000037 R_X86_64_32       .debug_str+0x000000000000011e
0000000000000040 R_X86_64_32       .debug_str+0x000000000000066b
0000000000000047 R_X86_64_32       .debug_str+0x0000000000000d38
000000000000004e R_X86_64_32       .debug_str+0x0000000000000bef
                  ... another 60000 records ...
00000000000a0c8d R_X86_64_32       .debug_str+0x0000000000000add
00000000000a0ca0 R_X86_64_32       .debug_str+0x0000000000000526
00000000000a0cae R_X86_64_64       Calculation_1s_Func_Buf

我已经尝试过EXTRA_CFLAG += -S,但没有成功。

那么,在使用kbuild进行构建时,有什么方法可以避免在我的对象文件中创建调试信息呢?

EN

回答 1

Stack Overflow用户

发布于 2013-11-20 18:32:57

你有没有试过关闭CONFIG_DEBUG_INFO?

在‘内核破解’->‘编译时检查和编译器选项’->‘在menuconfig中使用调试信息编译内核。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20090411

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档