Я хотел начать кросс-компиляцию для малины pi2 на 32-битной Ubuntu (в виртуальной коробке), поэтому я загрузил toolchain на сайт github (https://github.com/raspberrypi/tools) и попытался скомпилировать простую мирную программу hello с команда (я включил путь к папке, содержащей бен рычажного линукс-gnueabihf-GCC-4.8.3 переменной PATH.):Перекрестное компиляция для Raspberry pi 2 error
arm-linux-gnueabihf-gcc-4.8.3 HelloWorld.c
Однако, я всегда получаю следующее сообщение об ошибке:
path/to/the/linker/in/the/toolchain/ld:/path/to/the/libc.so.6file/in/the/toolchain/libc.so.6: file format not recognized; treating as linker script
и последующая ошибка синтаксиса. Когда я смотрю в libc.so.6, я вижу одну строку, содержащую:
libc-2.13.so
libc-2.13.so файл присутствует в той же папке, что и файл libc.so.6. Когда я призываю
file libc-2.13.so
я получаю:
libc-2.13.so: ELF 32-bit LSB shared object, ARM, EABI5 version 1 (SYSV), dynamically linked (uses shared libs), BuildID[sha1]=dbd0cdca5a677bea1417be1272f4c5ef43bd3e22, for GNU/Linux 2.6.26, stripped
Я не знаю, что может привести к этой ошибке, так как очевидно, линкер из инструментария, и файла libc.so.6 с инструментария, обрабатывается поэтому формат файла должен быть распознан, не так ли? Может кто-нибудь указать мне в правильном направлении здесь? Благодаря!
Я думаю, что вам не хватает пути к ссылке, поэтому компоновщик пытается связать libc вашей системы, а не с инструментальными цепочками. Попробуйте добавить опцию -L' для указания библиотек инструментальной цепочки. – Mine
Привет, спасибо за ваш комментарий! Я пробовал флаги -I и -L в соответствующих местах toolchain (libc/lib и include) и все еще получил ту же ошибку ... Однако, поскольку я включил toolchain в качестве первого места в PATH, он уже принял правильный файл libc.so (путь к файлу libc также включен в сообщение об ошибке) Есть ли у вас дополнительные предложения? – KO70
Скомпилируйте с опцией -v, чтобы увидеть используемую команду компоновщика. –