ARM向けのクロスコンパイル方法


41

ARMプロセッサのクロスコンパイル用にGCCを設定するにはどうすればよいですか?ホストはx86_64(AMD64-Ubuntu 12.04)にあり、ターゲットはARM(Raspberry PiとPandaboard-それぞれに対して個別のコンパイルを行います)になりますか?

回答:


44

インストールgcc-arm-linux-gnueabiしてbinutils-arm-linux-gnueabiパッケージ化し、コンパイルのarm-linux-gnueabi-gcc代わりに使用しますgcc

ターゲットシステムで使用しているlinuxおよびbinutilsのフレーバーに注意する必要があります。最新のものはハードフロートです。この場合、次のようにします。

sudo apt-get install gcc-arm-linux-gnueabihf

これにより、binutilsを含む完全なクロスコンパイル環境が実現します。


Ubuntu 13.10では、「gnueabi」でgcc-4.7、「gnueabihf」でgcc-4.8が得られます。
nobar

コンパイルしようとしたとき、openssl/ossl_typ.h既にインストールしていたのにエラーが見つかりませんでしたlibssl-dev
ネックウィ14

1
からソースコードを取得した場合apt-get sourceapt-get build-dep通常は単にコンパイルできますdpkg-buildpackage -b -uc -us -r。メイクファイルを変更せずにARM用の.debを簡単にビルドする方法はありますか?
ジョナサン14

@Maratyszcza行の実行に関してより具体的にお願いできますand then just use arm-linux-gnueabi-gcc instead of gcc for compilationか?コンパイルするときはmake、AFAIKが自然に指す呼び出し、/usr/lib/gccまたはそれに近い呼び出しを使用します。arm-linux-gnueabi-gccを直接呼び出すにはどうすればよいですか?
モメルギル

9
@MomergilCC=arm-linux-gnueabihf-gcc make ...
Maratyszcza

1

ディスクイメージプロバイダーは、互換性のあるクロスコンパイラも提供する必要があります

これが唯一の信頼できる方法です。

特にRPIの場合、提供されているクロスコンパイラはhttps://github.com/raspberrypi/toolsで入手でき、https//raspberrypi.stackexchange.com/questions/64273/installing-raspberry-で説明されているように使用できます。パイクロスコンパイラ/ 83215#83215

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

クロスコンパイラを誤って選択すると、次のことが発生する可能性があります。

私のお気に入りの選択肢は、Buildrootで独自のイメージを構築することです:https ://stackoverflow.com/questions/47557262/how-to-download-the-torvalds-linux-kernel-master-recompile-it-and-boot-it- wi / 49349237#49349237これにより、ソースからすべてが構築され、すべての互換性が確保されます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.