Linux内核代码里的GNU C扩展

#define __init __attibute__ ((__section__ (“. Init.text”)))

__attribute__为内核使用的GNU C扩展,这就意味着能够编译内核的唯一编译器是GNU C

__section也是GNU C的一个属性。

编译器将函数放在.text段,变量放在.data段或者.bss段。

此部分与可执行文件相关。可执行文件由荷娜连接在一起的对象文件组成。对象文件包含许多段,如文本/数据/init数据/bass等。这些对象文件都是由于一个成为连接器脚本的文件链接并装入。此脚本将输入文件的个各段映射到输出文件中。详细见vmlinux.lds文件里的initcall.init部分。


GNU C的这些拓展对代码优化/目标代码布局,安全检查等方便提供了很强的支持。

你可能感兴趣的:(Linux内核代码里的GNU C扩展)