Как передать флаги препроцессору во время условной сборки - PullRequest
0 голосов
/ 18 апреля 2011

Я хочу передать определенные макросы, определенные в Makefile, препроцессору, например "_DBGR_ON_" в следующем коде, чтобы код был соответствующим образом собран. Эта опция работает в компиляторе diab (c кросс-компилятор для powerpc), определяя его с помощью -D_DBGR_ON_ в make-файле и добавляя его в качестве флага Assembler. Но как включить это в 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_

....... и т. Д ..

1 Ответ

0 голосов
/ 19 апреля 2011

Я думаю, что это больше проблема gas, чем препроцессор GCC или C.gas не выполняет предварительную обработку (хотя ее можно запустить через gcc, чтобы сначала вызвать препроцессор Си)..ifndef - это директива gas, которая работает на уровне символов, определенных в файле ассемблера, а не директива препроцессора C (#ifndef).

В этом случае: что вам нужно в вашем ASFLAGS is --defsym _DBGR_ON_=1.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...