Попытка запустить кросс-скомпилированный исполняемый файл на целевом устройстве завершается неудачно с: Нет такого файла или каталога
Я попал в не очень солнечный мир кросс-компиляции.
Я пытаюсь скомпилировать простое приложение hello world для моего BeagleBone Black (на котором работает процессор TI Cortex-A8).
Прежде всего, я скомпилировал и успешно запустил приложение hello world на x86 сgcc
Затем я изменил настройки компиляции следующим образом:
arm-linux-gnueabi-gcc -c -O0 -g3 -Wall main.c -o bin/obj/main.o
arm-linux-gnueabi-gcc bin/obj/main.o -o bin/hello_world
Я передал файл через SCP на BeagleBone и установил права на выполнение с помощьюchmod +x hello_world
После запуска (./hello_world
), мой единственный ответ:
-bash: ./hello_world: No such file or directory
Выход изfile
совпадает с/sbin/init
как и следовало ожидать:
$ file hello_world
hello_world: ELF 32-bit LSB executable, ARM, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.32, BuildID[sha1]=0x24b659b7a41fe043a6f4649d4ebfb5e692ebf0c7, not stripped
$ file /sbin/init
/sbin/init: ELF 32-bit LSB executable, ARM, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.26, BuildID[sha1]=0xd21f6957ec031a27d567b3d5e6aa14b9e0c30c37, stripped
Результатldd
является:
$ ldd hello_world
not a dynamic executable
Я попытался добавить подходящую платформу и тип процессора, изменив компиляцию на:
arm-linux-gnueabi-gcc -c -O0 -g3 -Wall -march=armv7-a -mtune=cortex-a8 main.c -o bin/obj/main.o
arm-linux-gnueabi-gcc bin/obj/main.o -o bin/hello_world
Это первоначально начало давать мне новую ошибку:Text file busy
, но с тех пор я не смог вернуть эту ошибку снова, поскольку она теперь возвращаетNo such file or directory
, Я предполагаю, что эта конкретная попытка была просто неудачной передачей или чем-то еще.