我的linux C项目有一个简单的makefile,它可以编译并链接几个模块。
我在output.map中看到,变量和函数是在声明的基础上逐个链接的,每个模块都在链接。
我希望将来自所有模块的所有变量归为一个部分,并将所有功能归为另一部分。
我知道我可以通过定义部分来做到这一点,但我不禁要问是否有现成的链接器开关会自动执行此操作。
通过使用“链接器命令”文件,您可以按照自己的意愿放置所有内容。
但是,使用gcc
,会自动定义几个部分。
。text部分包含所有可执行代码.data节包含所有预定义的数据.bss部分具有所有变量
还有一些其他部分,主要用于特殊目的
上面是一个简化的概述,但是,数据和代码不会像您指出的那样串在一起。除其他原因外,因为变量和代码对于内存页需要不同的参数。