Chinaunix首页 | 论坛 | 博客
  • 博客访问: 371196
  • 博文数量: 44
  • 博客积分: 2060
  • 博客等级: 上尉
  • 技术积分: 528
  • 用 户 组: 普通用户
  • 注册时间: 2008-04-17 20:50
文章分类
文章存档

2011年(1)

2010年(28)

2008年(15)

分类: LINUX

2008-09-19 19:54:23

Linker Script in Linux

—— vmlinux_32.lds.Svmlinux

Author:

 

 

 

 

(本文基于2.6.27-rc2内核版本)


写在前面的话

经常在内核中看到一些由链接脚本提供的全局变量,但一直不清楚链接脚本的工作原理,这是件非常不爽的事情。最近刚做完一个task,于是抽了点时间学习了一下连接脚本的语法,配合Linuxx86平台的vmlinux_32.lds.S文件及编译生成的未压缩的内核——vmlinux,学习了内核是如何通过链接脚本生成最后的image的。写下这篇文章,供感兴趣的朋友参考。小弟对链接器知之甚少,文中难免有错,,我好及时纠正:)

 

 

 (版权声明:本文欢迎转载。但未经允许不得用于商业目的)


内容提要

本文简单的介绍了理解内核链接脚本需要的链接器知识和链接脚本语法,从vmlinux_32.lds.S文件分析了内核image的构成,并着重讲解了使用自定义section配合链接脚本动态创建表的方法。这里或许有一些你经常看到但不了解原理的东西,例如内核导出符号表是如何创建的?“__initcall修饰的函数在什么时候被内核调用?“__initdata是否会被释放?等。
 
 
 
 
 
 
 
 
 
 
阅读(3530) | 评论(0) | 转发(1) |
给主人留下些什么吧!~~