Ada - 奇怪的错误 - gcc/gnatbind 的一致版本

Posted

技术标签:

【中文标题】Ada - 奇怪的错误 - gcc/gnatbind 的一致版本【英文标题】:Ada - strange error - consistent version of gcc/gnatbind 【发布时间】:2011-09-28 00:10:18 【问题描述】:

我正在尝试编译一个 Ada 项目。

我从 Libre AdaCore 安装了当前的 2011 GNAT GPL 包,它也包含 gcc 编译器。

奇怪的错误如下

fatal error: file dom.ali is incorrectly formatted
make sure you are using consistent versions of gcc/gnatbind

如果我键入它给我的 gcc /usr/gnat/bin/gcc 如果我输入哪个 gnatbind 它给了我 /usr/gnat/bin/gnatbind

“格式错误”文件的内容如下

V "GNAT Lib v2011"
A -gnat05
A -gnatA
P ZX
R nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnvnnnnnnnnnnnnnnnnnnn

U dom%s         dom.ads         2bd88f63 NE OO PK IU
D dom.ads       20090519080656 2bd88f63
D system.ads        20110419093140 2d1a1afa
X 1 dom.ads
44K9*DOM 46l5 46e8

有什么线索吗?

提前谢谢你

编辑:gnatls -v 显示以下内容(为便于阅读而格式化),

GNATLS GPL 2011 (20110419) 版权所有 (C) 1997-2011,Free Software Foundation, Inc. 源搜索路径: /usr/gnat/lib/gcc/i686-pc-linux-gnu/4.5.3/adainclude/ 对象搜索路径: /usr/gnat/lib/gcc/i686-pc-linux-gnu/4.5.3/adalib/ 项目搜索路径: /usr/gnat/i686-pc-linux-gnu/lib/gnat /usr/gnat/share/gpr /usr/gnat/lib/gnat

【问题讨论】:

gnatls -v 说什么? (应该从 GNATLS GPL 2011 开始...)您使用的是什么操作系统? 顺便说一句:该语言称为“Ada”,而不是“ADA”。这是一个名称,而不是缩写。 GNATLS GPL 2011 (20110419) 版权所有 (C) 1997-2011,Free Software Foundation, Inc. 源搜索路径: /usr/gnat/lib/gcc/i686-pc -linux-gnu/4.5.3/adainclude/ 对象搜索路径: /usr/gnat/lib/gcc/i686-pc-linux-gnu/4.5.3/adalib/ 项目搜索路径: /usr /gnat/i686-pc-linux-gnu/lib/gnat /usr/gnat/share/gpr /usr/gnat/lib/gnat 我很抱歉识别错误,操作系统是 ubuntu 11.04。关于 Ada,你是对的。 因为它在抱怨 dom.ali,所以我认为您正在使用 XMLAda。当您检索并安装 GNAT GPL 2011 时,您是否按照其说明下载并安装了它?如果您使用的是 gpr 配置文件,您是否“使用”了正确的 XMLAda gpr 文件?如果您使用 GPS 项目管理,您的项目是否依赖于正确的 XMLAda gpr 文件?如果您在命令行上使用 gnatmake,您是否包含正确的 XMLAda 目录? 【参考方案1】:

所有编译单元都必须使用完全相同的 GNAT 版本和使用的库版本进行编译。如果您使用预编译库,则可能需要重新编译它们。

参见Debian Ada Policy 部分关于 ali 文件。

【讨论】:

最后是这样,我使用的是用旧 GNAT 编译的旧 XMLAda,用最新版本重新编译一切正常。

以上是关于Ada - 奇怪的错误 - gcc/gnatbind 的一致版本的主要内容,如果未能解决你的问题,请参考以下文章

C++ vs. D、Ada 和 Eiffel(带有模板的可怕错误消息)

如何在 Ada 中读取大文件?

如何在 Ada 的动态谓词中处理未初始化的数据?

覆盖在Ada中接收类范围类型作为参数的过程

检索 COM 类工厂中 CLSID 为 {820280E0-8ADA-4582-A1D9-960A83CE8BB5} 的组件失败,原因是出现以下错误: 80040154 没有注册类 (异常来自 HRE

gcc 编译器 lib 文件未找到错误