gccを使用してRaspberry Piのプログラムをクロスコンパイルするにはどうすればよいですか?


8

私はgccを使用して、メインコンピュータで小さな小さなCおよびC ++プログラムをコンパイルするのが好きです。しかし、私はRaspberry Piも持っており、700 MHzシングルコアコンピューターであるため、バイナリを作成するたびに開発作業を行う必要はありません。x86ラップトップを使用して、プログラムをRaspberry Pi用にクロスコンパイルする方法(方法があることを知っているため)また、C(++)プログラムをPiでコンパイルしてx86バイナリを生成する方法はありますか?それが何らかのヘルプである場合、「SoCはBroadcom BCM2835です。これには浮動小数点を含むARM1176JZFSが含まれています...」(公式のRaspberry Pi FAQによると)。


ラズベリーPI SEもあり、ここでは正しい軌道に乗ってあなたを得ることができる質問です:raspberrypi.stackexchange.com/questions/192/...
Lekensteyn

回答:


4

aptリポジトリでのポーキングと非常に優れたBuilding Embedded Linux Systems(2nd edition、2008、O'Reilly)の組み合わせを使用して、私はこれを見つけました:

arm-linux-gnueabi-gcc

これは、コマンドの名前と、それを取得するためにインストールするパッケージの両方です。呼び出されると、それgccはARMアーキテクチャ(または少なくともBCM2835を含むサブセット)のパッケージをビルドすることを除いて、「バニラ」とまったく同じように動作します。 組み込みLinuxシステムの構築(93-94ページ)は、クロスコンパイルの方法でGNUツールを呼び出すために使用される名前が次の形式に従うことを説明しています。

cpu-kernel-manufactuer-os

-gcc一番上の例の最後には、あるコンポーネントの一部specifingに使用する、binutils使用したいです。ld(リンカー)やas(アセンブラー)などの別のGNUツールチェーンコンポーネントと交換できます。の場合arm-linux-gnueabi-gccarmはアーキテクチャ、linuxはカーネル、gnueabiはosであり、gccはコンポーネントです。メーカーはどこですか?どうやら、製造元はほとんど違いがないため、「不明」と指定することも、完全に省略することもできます(それを含めてarm-linux-unknown-gnueabi-gcc)。


1

公式に文書化された方法

https://www.raspberrypi.org/documentation/linux/kernel/building.mdGitHubの

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のツールリポジトリ


0

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

お役に立てば幸いです。`


努力に感謝します、本当にそうです。残念ながら、このチュートリアル(および対応するコード行)は、makemake( "PROJECT = RPi ARCH = arm PVR = yes make release -j N" を使用するように設定されたプロジェクトをコンパイルするために使用するもので、以前のものは単なるシェル変数の束)。現在、実際にmake gccを使用していますが、提供されたコード行を使用するには、makeのソースを取得し、gccに必要な引数を追加するコードのさまざまな部分を探して、そのほとんどを調べる必要があります。試していただきありがとうございます!
fouric '19
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.