我想将Makefile中定义的某些宏传递给下面代码中的“_DBGR_ON_”之类的预处理器,以便相应地汇编代码。此选项在diab编译器(c交叉编译器for powerpc)中工作,方法是在makefile中使用-D_DBGR_ON_定义它并将其包含为Assembler标志。 但是如何将它包含在GCC中。
当我这样做时(ASFLAGS = -mregnames -D_DBGR_ON_。),我收到错误:无法识别的选项`-_DBGR_ON _'
然后,我尝试了ASFLAGS = -mregnames -D _DBGR_ON_,我得到了“无法打开_DBGR_ON_进行阅读:没有这样的文件或目录”
请帮助GCC中忽略-D选项。
我使用-D选项在Diab中执行条件汇编,编译。如何在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 :(得分:0)
我认为这比GCC或C预处理器更像是一个gas
问题。 gas
本身不进行预处理(尽管可以通过gcc
运行以首先调用C预处理器)。 .ifndef
是一个gas
指令,它在汇编程序文件中定义的符号级别工作 - 而不是C预处理程序指令(#ifndef
)。
在这种情况下:ASFLAGS
中您需要的是--defsym _DBGR_ON_=1
。