конфликты между процессором и аркой при строительстве - PullRequest
0 голосов
/ 04 ноября 2018

У меня есть сомнения относительно параметров mcpu и march для gcc. В моей настройке переменные среды используют -mcpu = cortex-a7 и -march = armv7ve, при сборке приложения появляется следующая ошибка.

error: switch -mcpu=cortex-a7 conflicts with -march=armv7-a switch [-Werror]

На самом деле cortex-A7 использует архитектуру armv7-a. Не уверен, почему возникла проблема с конфликтом.

1 Ответ

0 голосов
/ 04 ноября 2018

Несмотря на то, что Cortex-A7 использует архитектуру ARMv7-A, также верно, что Cortex-A7 реализует расширенные функции, которые реализованы не всеми процессорами ARMv7-A; более конкретно, Cortex-A7 реализует вариант ARMv7ve.

Как правило, указание -mcpu и -march в параметрах gcc является излишним, поскольку -mcpu (который указывает компилятору генерировать код, который будет выполняться на конкретном процессоре) подразумевает -march (который указывает компилятору генерировать код, который будет работать на определенной архитектуре или варианте). Если вам важно только то, что ваша программа должна работать на Cortex-A7, вы можете использовать -mcpu = cortex-a7; если ваша программа должна быть в состоянии работать на любом процессоре ARMv7-A, вы должны использовать -march = armv7-a (опционально добавив -tune = cortex-a7, если вы хотите, чтобы код был оптимизирован для Cortex-A7, при этом все еще имея возможность запустить на других процессорах).

...