【发布时间】:2015-06-21 17:32:43
【问题描述】:
我将使用一个简单的具体示例来说明我正在尝试做的事情。
文件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 生成代码,其中 all 访问全局变量/静态函数变量要么通过间接级别完成,即通过指针(-fPIC 不够好,因为 static 全局变量不能通过 GOT 访问)或者可以手动指定它们的地址(在链接/编译时)。
谢谢
【问题讨论】:
标签: pointers gcc global-variables indirection