2011-04-18 76 views
0

期間如何傳遞參數給預處理我想通過在Makefile中定義在下面的代碼預處理器像「_DBGR_ON_」,這樣的代碼將被相應組裝某些宏。這個選項在DIAB編譯器(爲PowerPC C交叉編譯器)通過在生成文件與-D_DBGR_ON_限定它幷包括它作爲彙編標誌工作。 但如何將其包含在GCC中。條件彙編

當我做同樣的(ASFLAGS = -mregnames -D_DBGR_ON_。),我是越來越錯誤:無法識別選項'-_DBGR_ON_」

然後,我試過ASFLAGS = -mregnames -D _DBGR_ON_,我是越來越「無法打開_DBGR_ON_閱讀:沒有這樣的文件或目錄」

請幫助與-d選項在GCC忽略。

我用-D選項做條件彙編在迪亞布編譯。如何在GCC中做到這一點。我被困在這裏。

問候, Thulasi

內容文件的Startup.s的...

.globl  _start 
_start: 
.ifndef _DBGR_ON_ # Flash mode 
    mfmsr  r3 
    ori  r3,r3,0x1040    # Set ME/IP flags 
    mtmsr  r3 
    sync 
.else 
    mfmsr  r3 
    ori  r3,r3,0x1000    # Set ME/IP flags 
    mtmsr  r3 
    sync 
.endif #_DBGR_ON_ 

.......等等..

回答

0

我認爲這更多的是一個gas問題比GCC或C預處理器。 gas沒有做預處理本身(儘管它可以通過gcc運行先調用C預處理器)。 .ifndefgas指令,它在彙編文件中定義的符號的電平工作的 - 不是C預處理指令(#ifndef)。

在這種情況下:你在你的ASFLAGS需要的是--defsym _DBGR_ON_=1