2015-06-11 2 views
0

Я разрабатываю проект для процессора Cortex-M4 и мои флаги компилятора включить это:В чем разница между переменными TARGET_ARCH и TARGET_MACH?

-mlittle-endian -mthumb -mcpu=cortex-m4 

Вот отрывок из make базы данных (make -p | grep -E '^(LINK|COMPILE)\.[cosS]\ ' | sort)):

COMPILE.S = $(CC) $(ASFLAGS) $(CPPFLAGS) $(TARGET_MACH) -c 
COMPILE.c = $(CC) $(CFLAGS) $(CPPFLAGS) $(TARGET_ARCH) -c 
COMPILE.s = $(AS) $(ASFLAGS) $(TARGET_MACH) 
LINK.S = $(CC) $(ASFLAGS) $(CPPFLAGS) $(LDFLAGS) $(TARGET_MACH) 
LINK.c = $(CC) $(CFLAGS) $(CPPFLAGS) $(LDFLAGS) $(TARGET_ARCH) 
LINK.o = $(CC) $(LDFLAGS) $(TARGET_ARCH) 
LINK.s = $(CC) $(ASFLAGS) $(LDFLAGS) $(TARGET_MACH) 

Я вижу, что для источников ассемблере TARGET_MACH используется и для c-источников TARGET_ARCH используется, но в чем разница и как правильно указать эти переменные?

ответ

1

Нашел: http://zoo.cs.yale.edu/classes/cs210/help/make.html говорит, что TARGET_ARCH и TARGET_MACH выводятся из arch и mach для целевой системы. Если вы ищете вышеупомянутые утилиты, вы можете обнаружить, что на современных системах они соответствуют выходу uname -m и uname -p. Для моего рабочего стола они дают мне x86_64 и i386 соответственно.

+0

Оба являются «машинной архитектурой целевой системы», поэтому до сих пор неясно. Спасибо, в любом случае. – LennyB

Смежные вопросы