cmake -D CMAKE_CXX_FLAGS = "- march = armv8-a" для компиляции aarch64 - PullRequest
0 голосов
/ 03 июня 2019

Мне нужно адаптировать серию кодов и сценариев, написанных для Raspberry Pi (1-го поколения) (на котором работал процессор ARM11), для запуска на процессоре с платой Allwinner H6 (ARM Cortex-A53).

Я уже подставил CMAKE_SYSTEM_PROCESSOR с ARCH armv7l до ARCH aarch64. Но для запуска командной строки компиляции cmake у меня было

cmake -D CMAKE_CXX_FLAGS="-march=armv7-a" /..path

и я подумал заменить -march=armv7-a на -march=armv8-a.

Теперь я сомневаюсь: может ли это быть правильным для компиляции для Allwinner H6 64bit? Почему я не могу поставить прямо aarch64 вместо armv8-a? И, наконец: какая разница между «armv8» и «armv8-a»?.

Извините, я здесь немного запутался.

1 Ответ

1 голос
/ 04 июня 2019
  1. 1) Да, -march=armv8-a будет правильным, но менее конкретным, чем, скажем, -mtune=cortex-a53, поскольку Allwinner H6 - это cortex-a53.
  2. Я предполагаю, что вы не можете поставить-march=aarch64 вместо -march=arm-v8-a, потому что это было бы слишком общим: в конце концов, вы уже можете указать ‘armv8-a’, ‘armv8.1-a’, ‘armv8.2-a’, ‘armv8.3-a’, ‘armv8.4-a’ and ‘armv8.5-a’, как задокументировано здесь .
  3. armv8 - это общее имя для ARMv8-A, ARMv8-M и ARMv8-R.A, R и M являются «профилями» в соответствии с терминологией плеча и предназначены для различных типов приложений: Подробнее см. здесь , здесь и здесь .
...