2011-06-08 58 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