2011-06-08 60 views
1

使用Green Hill编译器,可以在运行时在链接器中创建可见的变量。在链接:
__ghs_ramstart = MEMADDR(dram_memory);
在代码:
if (__ghs_ramstart == 0) {do something}
是否有可能使用gcc时做同样类型的东西?如何使用GCC创建运行时可见变量

回答

3

是的,你可以使用GNU ld链接器脚本来做到这一点。 http://sourceware.org/binutils/docs-2.21/ld/Scripts.html#Scripts您可以在可从gcc访问的脚本中定义符号。我还用脚本创建数据表(例如地址数组)。

在链接脚本,你可以这样说

__ghs_ramstart = dram_memory; 

,并从C访问它,例如

extern char __ghs_ramstart[]; 

... 

您可能需要添加或删除前导下划线,具体取决于您的目标。有些目标会将它们添加到符号中,有些则不会。

+1

http://sourceware.org/binutils/docs-2.21/ld/Source-Code-Reference.html#Source-Code-Reference – Gerhard 2011-06-08 13:46:09

-1

您可以使用-D选项定义宏。

+1

宏不是变量。 – 2011-06-08 12:06:40