关于linux内核模块ko文件懂的大神指点指点

ix_lifelyvan 2016-04-11 09:43:07
最近在编译程序,程序可以在基于linux-3.17内核或者在裸板上运行。
基于内核的平台编译生成的ko文件是360KB,而不基于操作系统的平台编译生成的bin文件只有86KB,为何差别会这么大,想想ko文件中需要包含基于OS的函数接口之类的文件但是也不至于大这么多。不知是不是ko文件固定格式需要会加入一些其他内容,有没有懂得大神指点一下迷津。
另外,linux内核模块的相关资料网上很多,但是关于ko文件的却几乎没有,如果有这方面的资料可否分享一下,对较底层的原理比较感兴趣。
先谢过。
...全文
4661 5 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
常书 2016-05-28
  • 打赏
  • 举报
回复
说是linux框架额外引入了大量的东西纯属扯淡,一个helloworld.ko才3KB,楼主比较的应该是不同的源码生成的东西,你在linux内核下编译的源码多大?难道2个的源码在一个数量级?
猪头三小队长 2016-05-27
  • 打赏
  • 举报
回复
两套代码难道是一样的?这个理解不了,在linux的内核驱动中大量用到了内核提供的接口,在裸机系统上怎么编译过的? 另外假设你的没有操作系统的机器是arm,就算每行源代码对应一行机器语言,你有十万行代码,那就是100k行机器语言,那也至少是200k的bin文件了。
fly 100% 2016-04-13
  • 打赏
  • 举报
回复
引用 2 楼 ix_lifelyvan 的回复:
[quote=引用 1 楼 xuweiwei1860 的回复:] 你把程序贴出来吧
- -#几十万行代码怎么贴出来。 ko文件属于一类elf,elf文件除了机器码外,还包含其它额外的信息,如段的加载地址,运行地址,重定位表,符号表等。而bin文件只包含机器码,两种格式用在不同平台。是不是这个的差别才导致同样代码量的ko文件比bin文件大出超过3倍?[/quote] 那你试试动态编译,看看是不是static 编译的
fly 100% 2016-04-12
  • 打赏
  • 举报
回复
你把程序贴出来吧
ix_lifelyvan 2016-04-12
  • 打赏
  • 举报
回复
引用 1 楼 xuweiwei1860 的回复:
你把程序贴出来吧
- -#几十万行代码怎么贴出来。 ko文件属于一类elf,elf文件除了机器码外,还包含其它额外的信息,如段的加载地址,运行地址,重定位表,符号表等。而bin文件只包含机器码,两种格式用在不同平台。是不是这个的差别才导致同样代码量的ko文件比bin文件大出超过3倍?

1,024

社区成员

发帖
与我相关
我的任务
社区描述
Linux /Unix kernel支持不同的硬件体系,X86, ARM, MIPS, 等等
社区管理员
  • CPU和硬件区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧