メインコンピューターでgccを使用して小さな小さなCおよびC++プログラムをコンパイルするのが好きです。ただし、Raspberry Piもあります。700MHzのシングルコアコンピューターであるため、バイナリを作成するたびに開発作業を行う必要はありません。 x86ラップトップを使用して、Raspberry Pi用にプログラムをクロスコンパイルするには(方法があることを知っているため)どうすればよいですか?そして、PiでC(++)プログラムをコンパイルしてもx86バイナリを生成する方法はありますか? 「SoCはBroadcom BCM2835です。これには、浮動小数点を備えたARM1176JZFSが含まれています...」(公式の Raspberry Pi FAQ による)。
apt
リポジトリと、非常に優れたBuilding Embedded Linux Systems(第2版、2008年、O'Reilly)をいじくり回すことで、これを見つけました。
arm-linux-gnueabi-gcc
これは、コマンドの名前と、それを取得するためにインストールするパッケージの両方です。呼び出されると、ARMアーキテクチャ(または少なくともBCM2835を含むサブセット)のパッケージをビルドすることを除いて、「Vanilla」gcc
とまったく同じように動作します。 組み込みLinuxシステムの構築(pg 93-94)は、クロスコンパイル方式でGNUツールを呼び出すために使用される名前が次の形式に従うことを説明しています。
cpu-kernel-manufactuer-os
一番上の例の最後にある-gcc
はcomponentで、binutils
のどの部分を使用するかを指定するために使用されます。 ld
(リンカー)やas
(アセンブラー)など、別のGNUツールチェーンコンポーネントと交換できます。 arm-linux-gnueabi-gcc
の場合、arm
はアーキテクチャ、linux
はカーネル、gnueabi
はos、gcc
はコンポーネントです。メーカーはどこですか?どうやら、製造元はほとんど違いがないため、「不明」と指定することも、一緒に除外することもできます(arm-unknown-linux-gnueabi-gcc
を作成することも含まれます)。
100%ではわかりませんが、 https://tandrepires.wordpress.com/2012/08/01/raspberry-pi-openelec-pvr-dvb-t/ を使用すると、試すことができます:1)必要なライブラリ:
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)次のオプションを使用してプロジェクトをコンパイルします。Nはx86 CPUのコア数です。
$ PROJECT=RPi Arch=arm PVR=yes make release -j N
役に立てば幸いです。 `
公式に文書化された方法
https://www.raspberrypi.org/documentation/linux/kernel/building.md ( 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
Ubuntu 17.10でテスト済み、5caa7046982f0539cf5380f94da04b31129ed521のツールリポジトリ