コンパイラーの概要
MPLAB XC8 CコンパイラはCプログラミング言語用の独立した最適化ISO C99クロスコンパイラです。
このコンパイラはすべての8ビットPICおよびAVRマイコンをサポートしますが、本書ではMicrochip PICデバイスのみをターゲットとするプログラム用のxc8-cc
ドライバの使用について説明し、さらにプログラムがC99規格に対してビルドされることを説明します。
コマンドラインドライバ
MPLAB XC8コンパイラのコマンドラインドライバ、xc8-cc
は、Cコード生成、アセンブリ、リンクステップを含むコンパイルのすべての側面を実行するために呼び出すことができます。
すべての内部アプリケーションの複雑さを隠し、すべてのコンパイルステップに一貫したインターフェイスを提供するため、コンパイラを呼び出すにはxc8-cc
の使用が推奨されます。
コンパイルを支援するためにIDEを使用する場合でも、最終的にはIDEがxc8-cc
を呼び出します。
この章では、コンパイル中にドライバが実行するステップ、ドライバが受け入れ、生成できるファイル、コンパイラの動作を制御するコマンドライン・オプションについて説明します。
コンパイラを実行する
コマンドラインフォーマット
xc8-ccドライバは、Cおよびアセンブリ・ソースファイルのコンパイルとアセンブル、オブジェクトファイルとライブラリアーカイブのリンクに使用でき、最終的なプログラムイメージを形成します。
ドライバの基本的なコマンド形式は以下のとおりです:
xc8-cc [options] files
例えば、Cのソースファイルhello.c
をコンパイルしてリンクするには、次のコマンドを使います:
xc8-cc -mcpu=16F877A -O2 -o hello.elf hello.c
本マニュアルでは、コンパイラアプリケーションがコンソールの検索パスにあることを前提としています。
ファイル名の前にオプション(先頭のダッシュ"-"またはダブルダッシュ"--")を宣言するのが通例ですが、これは必須ではありません。
ファイルは、Cやアセンブラのソースファイル、再配置可能なオブジェクトファイル、アーカイブファイルなどを混在させることができます。 これらのファイルがリストされる順番は、プログラムの動作には直接影響しませんが、コードやデータの割当には影響することがあります。 アーカイブファイルの順番は、検索される順番を決定し、状況によっては、どのモジュールがプログラムにリンクされるかに影響する場合があることに注意してください。
また、いくつかの出力ファイルのベ ース名は、-oオプションを使用して指定されない限り、xc8-command行にリストされている最初のCソースファイルのベース名に基づいていることに注意してください。
Makeシステムを使用してコードをビルドする場合は、独自の中間p-code
ファイル形式(マルチステップCコンパイルで説明)に精通していることを推奨します。
プロジェクトでアセンブリソースモジュールが使用されない限り、MPLAB XC8 Cコンパイラでオブジェクトファイルが使用されることはほとんどありません。
入力ファイル
xc8-cc
ドライバは、ソースファイル、中間ファイル、ライブラリファイルをファイルタイプ(拡張子)のみで区別します。
表に示す大文字と小文字を区別する拡張子が認識されます。
拡張子 | ファイルフォーマット |
---|---|
.c | Cソースファイル |
.i | プリプロセッサされたCソースファイル |
.p1 | P-code 中間ファイル |
.s | アセンブラソースファイル |
.S | プリプロセッサが必要なアセンブリソースファイル |
.as または .asm | アセンブリソース・ファイル |
.o | 再配置可能なオブジェクトソースファイル |
.a | アーカイブ(ライブラリ)ファイル |
.hex | 最終的な出力ファイル |