我对Ada来说有点新鲜。我自己编译spec文件时看到以下错误:
gcc -c shapes.ads
cannot generate code for file shapes.ads (package spec)
gnatmake: "shapes.ads" compilation error
代码在使用正文构建时可以运行,我可以运行使用该程序包的程序。
那么问题是什么?
答案 0 :(得分:3)
这不是一个真正的错误。 (是的,我知道它看起来像一个: - )
GNAT的工作方式是单元的目标代码(包规范和主体,以及任何“分离”)放在单个“.o”目标代码文件中。因此,当您编译 body 时,您将获得目标代码文件 - 其编译会自动引入规范 - 而不仅仅是规范。
例外情况是当规范不需要正文时,即它不包含需要正文的声明,例如子程序或任务。
答案 1 :(得分:2)
.ads文件仅包含包的规范。如果它需要一个正文,你就不能这样编译。您必须编译.adb文件。
将其想象为C头(.h)文件。你也不编译它们,只编译.c文件。
PS:你可以使用gnatmake,它应该自动解决依赖关系并编译所需的东西。