我将使用一个简单的具体示例来说明我正在尝试做的事情。
文件main.c:
#include <stdio.h>
unsigned int X;
int main()
{
printf("&X = 0x%zX\r\n", &X);
return 0;
}
我想知道是否可以(使用链接器脚本/gcc 选项)X
在编译/链接时手动指定地址,因为我知道它位于内存中的某个位置,在我的可执行文件之外。
我只想知道这是否可能,我知道我可以使用指针(即unsigned int*
)来访问特定的内存位置(r/w),但这不是我想要的。
我所追求的是让 GCC 生成代码,其中对全局变量/静态函数变量的所有访问要么通过间接级别完成,即通过指针(-fPIC
不够好,因为静态全局变量不能通过 GOT 访问)或它们地址可以手动指定(在链接/编译时)。
谢谢