【发布时间】:2011-06-08 11:45:44
【问题描述】:
使用 Green Hill 编译器,可以在链接器中创建在运行时可见的变量。在链接器中:__ghs_ramstart = MEMADDR(dram_memory);
在代码中:if (__ghs_ramstart == 0) {do something}
使用 gcc 时是否可以做同样类型的事情?
【问题讨论】:
使用 Green Hill 编译器,可以在链接器中创建在运行时可见的变量。在链接器中:__ghs_ramstart = MEMADDR(dram_memory);
在代码中:if (__ghs_ramstart == 0) {do something}
使用 gcc 时是否可以做同样类型的事情?
【问题讨论】:
是的,您可以使用 GNU ld 链接器脚本来做到这一点。 http://sourceware.org/binutils/docs-2.21/ld/Scripts.html#Scripts 您可以在可从 gcc 访问的脚本中定义符号。我还使用脚本来创建数据表(例如地址数组)。
在链接描述文件中,你可以这样说
__ghs_ramstart = dram_memory;
并从 C 中访问它,例如
extern char __ghs_ramstart[];
...
您可能需要添加或删除前导下划线,具体取决于您的目标。有些目标将它们添加到符号中,有些则没有。
您可以使用 -D 选项定义宏。
【讨论】: