2017-07-14 10 views
1

gcc-arm-none-eabiコンパイラのバイナリを見てみましたが、これは以下の一覧にありますが、使用されている略語はすべてわかりません。私は上のプリプロセッサ、リンカ、コンパイラとしているバイナリ知りたいのですが...gccの略語の理解

$ ls /opt/gcc-arm-none-eabi-5_4-2016q3/bin/ 
arm-none-eabi-addr2line 
arm-none-eabi-ar 
arm-none-eabi-as 
arm-none-eabi-c++ 
arm-none-eabi-c++filt 
arm-none-eabi-cpp 
arm-none-eabi-elfedit 
arm-none-eabi-g++ 
arm-none-eabi-gcc 
arm-none-eabi-gcc-5.4.1 
arm-none-eabi-gcc-ar 
arm-none-eabi-gcc-nm 
arm-none-eabi-gcc-ranlib 
arm-none-eabi-gcov 
arm-none-eabi-gcov-tool 
arm-none-eabi-gdb 
arm-none-eabi-gdb-py 
arm-none-eabi-gprof 
arm-none-eabi-ld 
arm-none-eabi-ld.bfd 
arm-none-eabi-nm 
arm-none-eabi-objcopy 
arm-none-eabi-objdump 
arm-none-eabi-ranlib 
arm-none-eabi-readelf 
arm-none-eabi-size 
arm-none-eabi-strings 
arm-none-eabi-strip 

私は推測することができます。gccは、コンパイラのですか? ldはリンカーですか? これらのバイナリの正確な目的は何ですか?

+0

'arm'はチップファミリーです。 'eabi'は '拡張ABI'(拡張アプリケーションバイナリインタフェース)のようなもので、オブジェクトコード構造とo/sインタフェースに関連しています。これはおそらくGCCの文書のどこかで文書化されています。 –

+0

[Installation - Configuration](https://gcc.gnu.org/install/configure.html)のマニュアルで、名前について少しばかり離れた情報を見つけることができます。 –

答えて

3

先頭の 'arm-none-eabi'はコンパイラのタイプです。これはタプルと呼ばれ、configure '接頭辞'として指定されます。バイナリの多くは、別のバイナリ(gcc)を呼び出すリンクまたは短いラッパースクリプトです。また、同じ名前または複数のgccインストールを持つ既存のシステムバイナリがある場合もあります。

この情報は、プログラム名にmanコマンドを実行すると見つかります。簡潔には、

  • addr2line - アドレス(16進数)をコード行番号に変換します。
  • ar - スタティックライブラリ(またはアーカイブ)ツール。
  • よう -
  • C++、アセンブラ - C++フロントエンド
  • C++ FILT - プロトタイプで機能するように符号化された名前を変換します。
  • cpp - プリプロセッサのみ。
  • elfedit - elfヘッダー操作。
  • g ++拡張子付きg ++ - C++。
  • gcc - 標準バイナリ(指定されたオプションはラッパーと同じことができます)。
  • gcc-5.4.1 - 複数のGCCインストールがあるシステムのフルネーム。
  • gcc-ar - 複数の 'ar'の場合は名前を変更します。
  • gcc-nm - 複数の「nm」の場合は名前を変更します。
  • gcc-ranlib - 複数の 'ranlib'の場合に名前を変更します。
  • gcovの - コードカバレッジ
  • gcovのツール - コードカバレッジ
  • GDB - デバッガ
  • GDB-PY - より最小デバッガ
  • gprofの - コールグラフ/プロファイラ。
  • ld - リンカー(ほとんどの場合金)。
  • ld.bfd - いくつかの機能が追加された古いスタイルのリンカ。大規模なC++プロジェクトの方がはるかに遅いです。
  • nm - バイナリで '名前'を表示します。
  • objcopy - バイナリ(セクション)を操作します。
  • objdump - バイナリに関する情報。
  • ranlib - ライブラリインデックスを生成します。
  • readelf - ELFバイナリに関する情報。
  • サイズ - プログラムセクションサイズ
  • string - すべての文字列をバイナリにダンプします。
  • strip - バイナリからデバッグ情報を削除します。

概念として、名前「gcc-ar」と「ar」は物理的に同じものです。しかし、別の 'ar'がパス(Solarisや他のUnixシステム)に存在し、 'gcc-ar'という名前をgcc固有の 'ar'を得るために使うことができます。すべての 'gcc-XXX'はこのユースケースのものです。