Я пытаюсь использовать учебники по топологии и кросс-сборке Halide-lang. То, что я хотел бы сделать, это cross AOT компилировать программу Halide для встроенной цели Cortex A9.Сгенерируйте объектный файл AOT Halide для ARM Cortex A9
Я изменил lesson_11_cross_compilation.cpp со следующими изменениями:
Target target;
target.os = Target::Linux; // The operating system
target.arch = Target::ARM; // The CPU architecture
target.bits = 32; // The bit-width of the architecture
std::vector<Target::Feature> arm_features; // A list of features to set
arm_features.push_back(Target::ARMv7s);
target.set_features(arm_features);
brighter.compile_to_file("lesson_11_arm_32_linux", args, target); // Pass the target as the last argument.
brighter.compile_to_c("lession_11.c", args, "foo", target);
компилировать с помощью команды г ++, перечисленных в верхней части файла lesson_11_cross_compilation.cpp. Это создает исполняемый файл lession_11. Я запускаю исполняемый файл и получаю файлы lesson_11_arm_32_linux.h/o.
тогда я бег моего кросскомпилятора на этот файл, чтобы попытаться сформировать программу для моей цели, используя следующую командную строку:
/opt/Xilinx/SDK/2014.2/gnu/arm/lin/bin/arm -xilinx-linux-gnueabi-g ++ -o test -std = C++ 11 -lpthread lesson_10_aot_compilation_run.cpp lesson_11_arm_32_linux.o -mfpu = neon-vfpv4 /opt/Xilinx/SDK/2014.2/gnu/arm/lin/bin/ ../lib/gcc/arm-xilinx-linux-gnueabi/4.8.1/../../../../arm-xilinx-linux-gnueabi/bin/ld: ошибка: lesson_11_arm_32_linux.o использует VFP аргументы регистра, тест не /opt/Xilinx/SDK/2014.2/gnu/arm/lin/bin/../lib/gcc/arm-xilinx-linux-gnueabi/4.8.1/../../. ./../arm-xilinx-linux-gnueabi/bin/ld: не удалось объединить целевые данные файла lesson_11_arm_32_linux.o collect2: ошибка: ld возвращен 1 статус выхода
Кажется, что Halide генерирует код, который использует VFP. Я попытался изменить параметр -mfpu и -mfloat-abi = softfp, soft и hard. Ничего не работает. Есть ли способ настроить Halide для генерации определенного типа инструкций FPU?