Компиляция кода NEON на Odroid XU4

У меня есть узел ROS, который содержит код, сгенерированный кодировщиком Matlab. Этот код был сгенерирован для использования набора инструкций NEON на процессорах ARM Cortex A. Я хочу скомпилировать этот код на Hardkernel Odroid XU4 (который работает на Samsung Exynos5422 Cortex™-A15 2Ghz и Cortex™-A7 Octa core CPU). Однако мне не удалось скомпилировать/связать свой код.

Я добавил следующие флаги компилятора в пакеты CMakeLists.txt:

 -mfloat-abi=softfp -mfpu=neon -O2.

Тем не менее, во время компиляции я получаю следующее сообщение об ошибке:

/usr/lib/gcc/arm-linux-gnueabihf/4.8/include/arm_neon.h:32:2: error:
#error You must enable NEON instructions (e.g. -mfloat-abi=softfp -mfpu=neon) to use arm_neon.h

Затем следует еще много ошибок о неизвестных типах:

/home/odroid/catkin_ws/src/vio_ros/src/codegen/mw_neon.c:12:2: error: unknown type name ‘float32x4_t’
/home/odroid/catkin_ws/src/vio_ros/src/codegen/mw_neon.c:36:2: error: unknown type name ‘int32x4_t’
...

И многое другое. Кажется, все эти типы определены в arm_neon.h

Что мне нужно сделать, чтобы иметь возможность скомпилировать мой код?

Спасибо за вашу помощь


person Nicolas    schedule 09.10.2015    source источник
comment
Вы включаете arm_neon.h? Можете ли вы опубликовать небольшой образец вашего кода и make-файла?   -  person BitBank    schedule 09.11.2015
comment
Я понял, что было не так. Смотри мой ответ   -  person Nicolas    schedule 23.11.2015


Ответы (1)


Я понял, в чем проблема. Поскольку часть кода, компилируемого в этом проекте C++, была кодом C, мне также нужно установить флаги компилятора для C. Включение следующего в CMakeLists.txt приводит к компиляции кода:

set(NEON_FLAGS "-DENABLE_NEON -mfloat-abi=hard -mfpu=neon-vfpv4 -mcpu=cortex-a15 -Ofast")
set(CMAKE_CXX_FLAGS "-std=c++0x ${CMAKE_CXX_FLAGS} -Wno-format-security ${NEON_FLAGS}")
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${NEON_FLAGS}")
person Nicolas    schedule 23.11.2015