TL/DR : ARM (gnueabi) プラットフォーム用の GCC 4.7.0 クロスコンパイル ツールチェーンの構築に関する詳細情報はどこにありますか (Raspberry Pi デバイスでの実行を目的としています)?
新品の Raspberry Pi を手に入れたばかりで、プログラミングを始めたいと思っています。GCC ツールチェーン (私は Arch Linux システム イメージを使用しています) をインストールし、いくつかの基本的なプログラムをコンパイルして、すべて正常に動作しました。
また、Boost ライブラリをプロジェクトでよく使用するため、Boost ライブラリをコンパイルしようとしましたが、コンパイルが非常に遅いという事実を除いて、指示 ( ./bootstrap.sh
+ ) に従うことですべてが正常に機能するように見えました。./b2
数時間放置しましたが、最初のいくつかのソースファイルをほとんど通過しませんでした. 一晩実行した後、RAM 不足のためにビルド プロセスが中止されたことに気付きました。
したがって、Rasp Pi は、Boost のようなサイズのものをコンパイルするには、単純にパワー不足だと思います。それで、クロスコンパイルが頭に浮かびます。しかし、オンラインで入手できる ARM クロス コンパイルに関する情報はたくさんありますが、私にはわかりにくいと思います。どこから始めますか?
Raspberry Pi で最新の GCC バージョン (4.7.0) を使用できるので、理想的には同じバージョンでクロスコンパイルしたいと考えています。ARM 用の GCC 4.7.0 ツールチェーンはどこで入手できますか? (x86 CentOS 6.2 でコンパイルします)
編集:
不要な GPU メモリの割り当てを解除し、USB ドライブに 4GB のスワップ パーティションを設定し、ビルド ファイルは NFS 共有に配置しました。Boost は現在、はるかに高速にコンパイルされているため、管理しやすくなっています。ただし、x86 PC でクロス コンパイル用に GCC 4.7 ツールチェーンをセットアップする方法を知りたいと思っています。
編集2:
GCC 4.7.0 は比較的新しいため、ビルド済みのクロスコンパイラ (i386->ARM) はないようです。私はおそらく自分で構築する必要がありますが、これは重要な作業のようです (私は試みて失敗しました)。できれば最近のバージョンの 1 つについて、GCC クロスコンパイラを構築するために従うべきチュートリアルを知っている人はいますか?
この優れたシェル スクリプト(同じアーキテクチャのコンパイラをビルドするのに最適) を試してみましたがbinutils
、GCC の前提条件を正常にビルドできましたが、GCC ビルドは多くの不可解なエラーで失敗し続けました。私はここで本当に迷っているので、助けていただければ幸いです。
ラズベリーパイのGCCはで構成されました
--prefix=/usr --libdir=/usr/lib --libexecdir=/usr/lib
--mandir=/usr/share/man --infodir=/usr/share/info
--with-bugurl=https://bugs.archlinux.org/
--enable-languages=c,c++,fortran,lto,objc,obj-c++ --enable-shared
--enable-threads=posix --with-system-zlib --enable-__cxa_atexit
--disable-libunwind-exceptions --enable-clocale=gnu
--disable-libstdcxx-pch --enable-libstdcxx-time
--enable-gnu-unique-object --enable-linker-build-id --with-ppl
--enable-cloog-backend=isl --enable-lto --enable-gold
--enable-ld=default --enable-plugin --with-plugin-ld=ld.gold
--with-linker-hash-style=gnu --disable-multilib --disable-libssp
--disable-build-with-cxx --disable-build-poststage1-with-cxx
--enable-checking=release --host=arm-unknown-linux-gnueabi
--build=arm-unknown-linux-gnueabi
編集3:
コメントでユーザーdwelchが提案したように、このシェルスクリプトを使用して、ARM用の4.7 GCCツールチェーンを構築することができました(やった!) 。また、この記事をガイドとして作成しnewlib
、libstdc++
使用しました。ツールチェーンは正常に動作しますが、Raspberry Pi で実行可能ファイルを実行すると、. その原因は何ですか?Illegal instruction