Мне нравится использовать gcc для компиляции небольших программ на C и C ++ на моем главном компьютере. Тем не менее, у меня также есть Raspberry Pi, и, будучи одноядерным компьютером с частотой 700 МГц, я бы предпочел, чтобы мне не приходилось заниматься его разработкой каждый раз, когда я хочу создать для него двоичный файл. Как (поскольку я знаю, что есть способ) я могу кросс-компилировать свою программу для Raspberry Pi, используя мой ноутбук x86? И есть ли способ, которым я могу компилировать программы на C (++) на Pi, но создать бинарный файл x86? Если это поможет, «SoC - это Broadcom BCM2835. Он содержит ARM1176JZFS с плавающей запятой ...» (согласно официальному FAQ Raspberry Pi ).
gcc
cross-compilation
raspberrypi
fouric
источник
источник
Ответы:
Используя комбинацию поиска в
apt
репозиториях и чрезвычайно превосходных Building Embedded Linux Systems (2nd edition, 2008, O'Reilly), я обнаружил следующее:Это и имя команды, и пакет, который вы устанавливаете для ее получения. После вызова он действует точно как «ваниль»
gcc
, за исключением того, что он создает пакеты для архитектуры ARM (или, по крайней мере, подмножество, включающее BCM2835). Построение встраиваемых Linux-систем (стр. 93-94) объясняет, что имена, используемые для вызова инструментов GNU методом кросс-компиляции, соответствуют следующему формату:В
-gcc
конце самого верхнего примера находится компонент , используемый для указания, какую частьbinutils
вы хотите использовать. Его можно поменять на другой компонент цепочки инструментов GNU, такой какld
(линкер) илиas
(ассемблер). Дляarm-linux-gnueabi-gcc
,arm
это архитектура,linux
является ядром,gnueabi
является операционной системой, иgcc
является компонентом. Где производитель? По-видимому, производитель может быть указан как «неизвестный», так как он редко что-то меняет, или вообще не учитывается (в том числе это будет иметь значениеarm-linux-unknown-gnueabi-gcc
).источник
Официально документированный метод
https://www.raspberrypi.org/documentation/linux/kernel/building.md ( GitHub )
Протестировано в Ubuntu 17.10, репозиторий инструментов на 5caa7046982f0539cf5380f94da04b31129ed521
источник
Я не уверен в 100%, но, используя https://tandrepires.wordpress.com/2012/08/01/raspberry-pi-openelec-pvr-dvb-t/ , вы можете попробовать: 1) Необходимые библиотеки:
2) Скомпилируйте проект со следующими параметрами, где N - количество ядер вашего процессора x86:
Я надеюсь, что это помогает. `
источник
make
компиляции проекта, который был настроен для использования make ("PROJECT = RPi ARCH = arm PVR = yes make release -j N", то, что раньше было просто куча переменных оболочки). Теперь, в действительности,make
используется gcc, но для использования предоставленной строки кода мне нужно было бы получить источник make, а затем просмотреть большую часть его в поисках различных частей кода, которые добавили бы необходимые аргументы для gcc. Спасибо за попытку, хотя!