Como compilar programas para o Raspberry Pi com o gcc?

7

Eu gosto de usar o gcc para compilar pequenos programas C e C ++ no meu computador principal. No entanto, eu também tenho um Raspberry Pi e, sendo um computador single-core de 700 MHz, eu preferiria não ter que fazer meu trabalho de desenvolvimento nele toda vez que eu quisesse criar um binário para ele. Como (pois eu sei que há uma maneira) eu compilar de forma cruzada meu programa para o Raspberry Pi usando meu laptop x86? E existe uma maneira que eu possa compilar programas C (++) no Pi mas produzir um binário x86? Se houver alguma ajuda, "O SoC é um Broadcom BCM2835. Ele contém um ARM1176JZFS, com ponto flutuante ..." (de acordo com o Raspberry Pi oficial FAQ ).

    
por fouric 16.11.2012 / 19:18

3 respostas

4

Usando uma combinação de bisbilhotar nos repositórios apt e os extremamente excelentes Sistemas Embedded Linux (2ª edição, 2008, O'Reilly), encontrei o seguinte:

  

arm-linux-gnueabi-gcc

Esse é o nome do comando e o pacote que você instala para adquiri-lo. Uma vez invocado, ele age exatamente como "baunilha" gcc , com a única exceção que cria pacotes para a arquitetura ARM (ou um subconjunto incluindo o BCM2835, pelo menos). Construindo Sistemas Linux Embarcados (pág. 93-94) explica que os nomes usados para invocar as ferramentas GNU de uma maneira de compilação cruzada seguem este formato:

  

cpu-kernel-manufactuer-os

O -gcc no final do primeiro exemplo é o componente , usado para especificar qual parte do binutils você deseja usar. Ele pode ser trocado por outro componente toolchain GNU, como ld (linker) ou as (assembler). Para arm-linux-gnueabi-gcc , arm é a arquitetura, linux é o kernel, gnueabi é o os e gcc é o componente. Onde fica o fabricante? Aparentemente, o fabricante pode ser especificado como "desconhecido", já que raramente faz diferença ou deixado de lado (incluindo o arm-unknown-linux-gnueabi-gcc ).

    
por fouric 04.12.2012 / 20:43
0

Não tenho certeza em 100%, mas usando link , você poderia tentar: 1) Bibliotecas necessárias:

sudo apt-get install g++ git nasm flex bison gawk gperf autoconf automake m4 cvs libtool \
byacc texinfo gettext zlib1g-dev libncurses5-dev git-core build-essential xsltproc libexpat1-dev zip \
autopoint xfonts-utils libxml-parser-perl libproc-processtable-perl default-jre

2) Compile o projeto com as seguintes opções, onde N é o número de núcleos da sua CPU x86:

$ PROJECT=RPi ARCH=arm PVR=yes make release -j N

Espero que ajude. '

    
por fernando garcía 19.11.2012 / 21:17
0

Método documentado oficialmente

link ( GitHub )

git clone https://github.com/raspberrypi/tools
export PATH="$(pwd)/tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian-x64/bin:${PATH}"
printf '#include <stdio.h>\nint main() { puts("hello world"); }\n' > hello_world.c
printf '#include <iostream>\nint main() { std::cout << "hello world" << std::endl; }\n' > hello_world.cpp
arm-linux-gnueabihf-gcc -std=c99 -o hello_world_c hello_world.c
arm-linux-gnueabihf-g++ -std=c++11 -o hello_world_cpp hello_world.cpp

Testado no Ubuntu 17.10, repositório de ferramentas em 5caa7046982f0539cf5380f94da04b31129ed521