编译Spec文件时出错

时间:2012-03-29 08:32:59

标签: ada

我对Ada来说有点新鲜。我自己编译spec文件时看到以下错误:

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

代码在使用正文构建时可以运行,我可以运行使用该程序包的程序。

那么问题是什么?

2 个答案:

答案 0 :(得分:3)

这不是一个真正的错误。 (是的,我知道它看起来像一个: - )

GNAT的工作方式是单元的目标代码(包规范和主体,以及任何“分离”)放在单个“.o”目标代码文件中。因此,当您编译 body 时,您将获得目标代码文件 - 其编译会自动引入规范 - 而不仅仅是规范。

例外情况是当规范不需要正文时,即它不包含需要正文的声明,例如子程序或任务。

答案 1 :(得分:2)

.ads文件仅包含包的规范。如果它需要一个正文,你就不能这样编译。您必须编译.adb文件。

将其想象为C头(.h)文件。你也不编译它们,只编译.c文件。

PS:你可以使用gnatmake,它应该自动解决依赖关系并编译所需的东西。