Skip to content

GNUPro | 技術情報

GNUPro は GNU のコンパイラ (GCC)、デバッガ (GDB)、 アセンブラ (gas) やリンカ (ld) を含む各種バイナリユーティリティ (binutils)、またターゲットプロセッサによってはシミュレーション環境 (SID) なども含む開発環境です。

各ツールそのものはオープンソース由来ですが、GNUPro ではレッドハットの非常に厳密なテストによる品質保証プロセスを経て、 豊富なエンジニアリングリソースを活用した、充実し、 かつ迅速な対応のサポートサービスを御利用頂けます。

コンパイラ - GCC

GCC は GNU Compiler Collection の略であり、大きく分けると、 各プログラム言語のソースコードを解釈し、内部表現に変換するフロントエンドと、 内部表現を機械言語に変換するバックエンドの二つの部分からなります。 フロントエンドには既に C、C++、Objective-C、Fortran、Java そして Ada など向けのものがあります。またランタイムライブラリ (C++ 用に libstdc++、Java 用に libgcj など)も付属しています。 特に C と C++ 言語はどのアーキテクチャでもサポートされていて、 GCC の ISO/ANSI C および C++ 言語標準仕様への準拠は非常に高いことで有名です。

GCC の誇るべきもう一つの特長として、 移植されていてかつ安定動作するサポートターゲット環境が 非常に多くあることをあげることができます。 例えば、具体的にレッドハットの GNUPro に含まれる GCC でサポート対象としているターゲットプロセッサのごく一部として Intel x86 family, IBM PowerPC, MIPS, ARM/Xscale, Hitachi SH, Fujitsu FRV, Mitsubishi AM family, Toshiba MeP, Toshiba TX faimily, Sanyo Stormy16, Samsung CalmRISC などをあげることができます。

  • gcc: (小文字で "gcc" と表記する場合、通常 C コンパイラ = GCC の C 言語フロントエンドのことを指します。) gcc は各種 C 言語仕様標準に非常に高いレベルで準拠し、 かつ独自の機能も合わせ持つ、非常に優れた C 言語コンパイラです。 準拠している標準仕様については、例えば K& R の古い表記はもちろんのこと、 ANSI/ISO C99 といった最新の仕様があげられます。 また独自の機能として、 言語ソースコード内へのインラインでのアセンブリ言語の組み込みや、 ターゲットやソースコードの特性を反映した細かな最適化オプションなどをあげることができます。
  • g++: g++ は GCC の C++ コンパイラ(フロントエンド)です。 ANSI / ISO C++ 標準に高いレベルで準拠し、 同梱の C++ ライブラリ libstdc++ と合わせて使うことで、 最新の C++ テクノロジー 、例えば例外やテンプレートによるジェネリックプログラミング (メンバーテンプレートもサポート)などを利用することができます。

デバッガ - GDB

非常に多くのリモートデバッグプロトコルをサポートし、COFF、a.out そして ELF などの幅広いオブジェクト形式のサポートを含むデバッガです。 デバッグ情報プロトコル標準として DWARF2 などをサポートしています。

  • gdb: gdb は GDB のコマンドラインフロントエンドです。 開発者の方は gdb を使うことで開発者はソースコードレベル、 アセンブリ言語コードレベル、 変数、レジスタ、 メモリなどプログラムの様々な状態やリソースにアクセスし、 プログラムの動作を完全に把握/制御することが可能となります。 また gdb スクリプトによるデバッグプロセスの一部の自動化も可能です。
  • insight: insight は gdb の GUI フロントエンドです。 開発者の方は insight を使うことでコマンドラインフロントエンド gdb で実現されることはもちろんのこと、 ソースコードフレームでのソースとアセンブリ言語コードの混合表示や、 各々個別にアクセス可能な、レジスタウィンドウ、メモリウィンドウ、 watchpoint ウィンドウ、変数ウィンドウ、スタックウィンドウなどによって、 より簡単かつビジュアルなプログラム動作の把握/制御が可能となります。 さらに gdb コンソールを用いることで、 コマンドラインフロントエンドを同時に利用することも可能となっています。 なお Insight はクロスプラットフォームなツールキット Tcl/Tk を利用しているので、 レッドハットのサポートするどのホスト開発環境でも御利用頂けます。
    GNUPro/Insight on Windows
  • Eclipse: Eclipse はオープンソースの Java ベースの次世代のクロスプラットフォーム開発環境 (IDE) です。 GNUPro には Eclipse は含まれてはいませんが、 レッドハットの Red Hat Enterprise Linux に含まれる Eclipse を GNUPro と組み合わせて使うことももちろん可能です。
    GNUPro+Eclipse

binutils

binutils は ld (GNU リンカ)、gas (GNU アセンブラ) などを含む、 バイナリ操作のための各種ユーティリティのコレクションです。

ツール用途
ldGNU リンカ
asGNU アセンブラ
addr2line アドレスをファイル名と行番号に変換
ar アーカイブを作成、変更、抽出するためのユーティリティ
c++filt エンコード(マングル)された C++ シンボルのデコード(デマングル)
gprof プロファイラ(命令/サイクル回数)
nlmconv オブジェクトコードを NLM に変換
nm オブジェクトファイルからシンボルをリスト表示
objcopy オブジェクトファイルのフォーマット変換
objdump オブジェクトファイルの各種情報を表示
ranlib アーカイブの内容の索引を生成
readelf ELF フォーマットのオブジェクトファイルの情報を表示
size オブジェクトまたはアーカイブファイルの各セクションの容量を表示
strings ファイルの印字可能な文字列をリスト表示
strip オブジェクトファイルから指定するシンボルを取り除く
windres Windows リソースファイルコンパイラ (Windows/cygwin native 環境のみ)

newlib

Newlib は組み込みシステムで使うことを主目的に開発されている C 言語の標準ライブラリです。ランタイムライセンスが不要で、BSD-like な ライセンス で配布されていますので、自由にお客様の製品に組み込んで御利用頂くことが可能となっています。

Newlib はレッドハット由来のオープンソースプロジェクトのプロダクトの一つです。 詳細については Newlib プロジェクトサイト なども併せてご覧下さい。

SID

SID はターゲットシステムをシミュレートするためのフレームワークです。 疎結合された多数のコンポーネントで構成されています。 現在のところ SID の対応するターゲットプロセッサ/ボードは限られていますが、 コンポーネントとしては MPU や MPU 付属の演算ユニット、各種メモリ、MMU、LCD、 タイマーなどのシステムの各構成部分に対応するものがあり、単一 CPU 命令からマルチプロセッサシステムまで広範な領域のシステムをシミュレートすることができます。

SID はレッドハット由来のオープンソースプロジェクトのプロダクトの一つです。 詳細については SID プロジェクトサイト なども併せてご覧下さい。

その他

その他にも連携して使えるレッドハット由来のオープンソースプロジェクトのプロダクトとして Source Navigator などがあります。 (すべてのリストは sources.redhat.com/projects/ で見ることができます) これらの詳細については その他 セクションをご覧下さい。