2012-03-29 4 views
2

私はAdaに少し新しくしています。それは身体で構築だと私はパッケージを使用するプログラムを実行することができたときにSpecファイルをコンパイルするとエラーが発生する

gcc -c shapes.ads 
cannot generate code for file shapes.ads (package spec) 
gnatmake: "shapes.ads" compilation error 

コードは動作します。独自にspecファイルをコンパイルするとき、私は次のエラーを参照してください。

だから何が問題なのですか?

答えて

3

これは実際にはエラーではありません。 (ええ、それは1つのように見えます:-)

GNATの仕組みは、ユニット(パッケージのスペックとボディ、そして "分離されている")のオブジェクトコードが単一の ".o "、オブジェクトコードファイル。だから本体をコンパイルするときにオブジェクトコードファイルを取得します。コンパイルでは自動的に仕様が反映されますが、仕様だけではありません。

例外として、仕様に本体が必要ない場合、つまり本体に必要なサブプログラムやタスクなどの宣言が含まれていない場合があります。

2

.adsファイルには、パッケージの仕様のみが含まれています。ボディが必要な場合は、そのようにコンパイルすることはできません。 .adbファイルをコンパイルする必要があります。

Cヘッダー(.h)ファイルのように考えてください。 .cファイルだけをコンパイルしないでください。

PS:gnatmakeを使うことができます。自動的に依存関係を解決し、必要なものをコンパイルする必要があります。

+1

gnatmakeが答えです。 –