Перекрестная компиляция для среды ARM

#arm #cross-compiling

#arm #перекрестная компиляция

Вопрос:

Я работаю на компьютере ARM:

Вот /proc/cpuinfo :

 processor   : 0
model name  : ARMv7 Processor rev 0 (v7l)
BogoMIPS    : 413.08
Features    : swp half thumb fastmult vfp edsp neon vfpv3 tls vfpd32 
CPU implementer : 0x41
CPU architecture: 7
CPU variant : 0x0
CPU part    : 0xc09
CPU revision    : 0

Hardware    : ARM-Versatile Express
Revision    : 0000
Serial      : 0000000000000000
  

Я пытался скомпилировать эту программу с компьютера x86:

 #include <stdio.h>

int main()
{
   printf("Hello world!n");
   return 0;
}
  

Вот что я сделал для компиляции этой программы:

 arm-linux-gnueabi-gcc -static my_program.c
  

Вот сообщение об ошибке, которое я получаю при попытке запустить его на компьютере ARM:

Синтаксическая ошибка: неожиданное слово (ожидание «)»)

и вот результат file ./a.out

 ./a.out: ELF 32-bit LSB executable, ARM, EABI5 version 1 (SYSV), statically linked, for GNU/Linux 3.2.0, BuildID[sha1]=0e39c5694c188b0e596666fe6503909394e72f44, not stripped
  

Комментарии:

1. Сообщение об ошибке, скорее всего, исходит из командной строки. Используете ли вы сценарий оболочки для запуска компилятора? Или это arm-linux-gnueabi-gcc сценарий оболочки?

2. Можете ли вы убедиться, что выполняемый вами двоичный файл предназначен для Arm? file ./a.out

3. Вот выходные данные файла: ./a.out: 32-разрядный исполняемый файл ELF LSB, ARM, EABI5 версии 1 (SYSV), статически связанный, для GNU / Linux 3.2.0, buildId [sha1]=0520a4e554f2c337d6cf525f6a1835e5dad593de, не удален

4. Что содержит строка ‘Features’ в выходных данных для cat /proc/cpuinfo команды? если она действительно выглядит так: Features : half thumb fastmult vfp edsp neon vfpv3 tls vfpv4 idiva idivt vfpd32 lpae evtstrm , то есть она действительно содержит vfp функции, ваш процессор действительно поддерживает аппаратную плавающую точку, и вы должны использовать arm-linux-gnueabihf-gcc , а не arm-linux-gnueabi-gcc .

5. Как вы запускаете программу на своей цели?