Linker Script in Linux —— vmlinux_32.lds.S与vmlinux Author: ZX_WING (xing5820@163.com)
(本文基于2.6.27-rc2内核版本) 写在前面的话经常在内核中看到一些由链接脚本提供的全局变量,但一直不清楚链接脚本的工作原理,这是件非常不爽的事情。最近刚做完一个task,于是抽了点时间学习了一下连接脚本的语法,配合Linux下x86平台的vmlinux_32.lds.S文件及编译生成的未压缩的内核——vmlinux,学习了内核是如何通过链接脚本生成最后的image的。写下这篇文章,供感兴趣的朋友参考。小弟对链接器知之甚少,文中难免有错,希望发现错误的朋友发信到xing5820@163.com,我好及时纠正:) 声明:本文转自:http://blog.chinaunix.net/u2/66786/showart.php?id=1210846 本人转载只是为了以后学习的时候方便,同时也觉的文章确实不错!!
(版权声明:本文欢迎转载。但未经允许不得用于商业目的) 内容提要
本文简单的介绍了理解内核链接脚本需要的链接器知识和链接脚本语法,从
vmlinux_32.lds.S
文件分析了内核
image
的构成,并着重讲解了使用自定义
section
配合链接脚本动态创建表的方法。这里或许有一些你经常看到但不了解原理的东西,例如
“
内核导出符号表是如何创建的?
”
、
“__initcall
修饰的函数在什么时候被内核调用?
”
、
“__initdata
是否会被释放?
”
等。
|
·Linker Script in Linux 2
·Linker Script in Linux 3
·Linker Script in Linux 4