0

我想将 Makefile 中定义的某些宏传递给预处理器,如以下代码中的“_DBGR_ON_”,以便相应地组装代码。此选项在 diab 编译器(用于 powerpc 的 c 交叉编译器)中工作,方法是在 makefile 中使用 -D_DBGR_ON_ 定义它并将其包含为汇编器标志。但是如何将它包含在 GCC 中。

当我做同样的事情时(ASFLAGS = -mregnames -D_DBGR_ON_.),我收到错误:无法识别的选项 `-_DBGR_ON_'

然后,我尝试了 ASFLAGS = -mregnames -D _DBGR_ON_,我得到“无法打开 _DBGR_ON_ 进行阅读:没有这样的文件或目录”

请帮助,因为 -D 选项在 GCC 中被忽略。

我使用 -D 选项进行条件汇编,在 Diab 中编译。如何在 GCC 中做到这一点。我被困在这里。

问候, 图拉西

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_

.......等等..

4

1 回答 1

0

我认为这gas比 GCC 或 C 预处理器更成问题。 gas本身不进行预处理(尽管它可以通过gcc首先调用 C 预处理器来运行)。 .ifndefgas在汇编程序文件中定义的符号级别上工作的指令 - 不是 C 预处理器指令 ( #ifndef)。

在这种情况下:您需要的ASFLAGS--defsym _DBGR_ON_=1.

于 2011-04-18T23:03:25.447 回答