当前位置: 技术问答>linux和unix
GNU Compiler Section问题
来源: 互联网 发布时间:2017-03-31
本文导语: 大家好,有一个关于GNU编译器Section设置问题想请交一下大家。 比如把某些code放到同一个自定义的Section,可以用以下方式(Linux中已有的例子)来实现 #define __init __attribute__ ((__section__ (".init.text"))) #define __initdata _...
大家好,有一个关于GNU编译器Section设置问题想请交一下大家。
比如把某些code放到同一个自定义的Section,可以用以下方式(Linux中已有的例子)来实现
#define __init __attribute__ ((__section__ (".init.text")))
#define __initdata __attribute__ ((__section__ (".init.data")))
static int setup_dmaspeed[MAXBOARDS] __initdata = { -1, -1, -1, -1 };
asmlinkage void __init start_kernel(void)
这个做法需要在每个函数定义的地方都加上__init 申明。
现在的问题是我想把某个C文件中的所有函数和变量都放到__section__ (".init.text")和__section__ (".init.data")中去,有没有办法不需要为每个函数和变量添加,而是在C文件的开头和结束部分加入某个申明就可以了,这样可以为节省很多时间,谢谢!
比如把某些code放到同一个自定义的Section,可以用以下方式(Linux中已有的例子)来实现
#define __init __attribute__ ((__section__ (".init.text")))
#define __initdata __attribute__ ((__section__ (".init.data")))
static int setup_dmaspeed[MAXBOARDS] __initdata = { -1, -1, -1, -1 };
asmlinkage void __init start_kernel(void)
这个做法需要在每个函数定义的地方都加上__init 申明。
现在的问题是我想把某个C文件中的所有函数和变量都放到__section__ (".init.text")和__section__ (".init.data")中去,有没有办法不需要为每个函数和变量添加,而是在C文件的开头和结束部分加入某个申明就可以了,这样可以为节省很多时间,谢谢!
|
搜索 lds 分散加载,其实就是在LDS文件里把相应的xxx.o (.text),xxx.o (.data)等放到合适的地方