web-dev-qa-db-ja.com

GCCをインストールするための十分なスペースがない場合、Linux用にコンパイルするにはどうすればよいですか?

ヒューマンマシンインターフェース(Exor Esmart04)を購入しました。 Linux 3.10.12で実行されますが、このLinuxは取り除かれ、Cコンパイラーがありません。別の問題はディスク容量です:

disk-space-snip

GCCをインストールしようとしましたが、これに十分なディスク領域がありません。他のソリューションや、より少ないディスク領域を必要とする他のCコンパイラを持っている人はいますか?

23
NielsStenden

通常、組み込みデバイスの場合、ソフトウェアを直接コンパイルすることはありません。いわゆる cross-compilation つまり、通常のPCを使用してx86以外のアーキテクチャにコンパイルします。

Linuxは初めてということですが、参考までに、あなたは大きな問題に直面しています。組み込みデバイスへのクロスコンパイルは簡単な仕事ではありません。

私はあなたのHMIシステムを調査し、Yoctoについて話しているいくつかの結果に気づきました。 Yocto 要するに、組み込みデバイス用のファームウェアを構築するためのフレームワーク全体です。

HMIはオープンソースプロジェクト(Linux、おそらくbusyboxなど)を大量に使用しているため、製造元が必ずに、すべてのオープンソースコンポーネントを再構築する方法を提供します。あなた自身。通常、これを行う必要があるのはBSPBoard Support Package )です。通常、ハードウェアの製造元がそれを出荷します。

  • ファームウェア全体を最初から再構築できるbuildrootプロジェクトを使用します。
  • 対応するyoctoプロジェクトの新しいコピーに追加されたyoctoメタを使用すると、ファームウェア全体を再構築することもできます。
  • よりまれに、くだらないスクリプトとビルド済みコンパイラの束。

だから、私があなただったら、私は:

  1. 製造元のサポートに連絡して、オープンソースの使用によって暗示されるように、ファームウェアを再構築するためのものを要求します。
  2. 並行して、「your HMI + yocto」、「your HMI + buildroot」などをGoogleで検索します。

さらにググリングした後、私は github でYoctoメタを見つけました。

このメタによって実装されたマシンは、メタのディレクトリ conf/machine で確認できます。

現在、次のコードネームで5つのマシンが定義されています。

  • us01-kit
  • us02-kit
  • us03-kit
  • usom01
  • usom02

だから私はあなたがこれを掘り下げることを提案します。これはおそらく、自分でソフトウェアを構築する方法です。また、githubアカウントで このページ を確認して、さらに手がかりを得ることができます。

63
binarym

クロスコンパイルに関するbinarymの答えに同意します。ただし、そのような保守的なハードウェアを備えたマシンで直接コンパイルしたい場合は、x-86アーキテクチャで約100KBを占める Tiny C Compiler(tcc) などの小さなコンパイラを検討することをお勧めします。 。ただし、サポートはC11ではなくISO C99までしか拡張されないことを指摘しておきます。

3