Ada GPS IDE编译器错误架构x86_64的未定义符号

时间:2013-08-01 19:57:36

标签: ada

尝试让GtkAda工作。没有自己编译lib,有很多问题,最后我在互联网上找到了一个预编译的库。当然GPS甚至在将它添加到我的路径后也找不到它......

所以我手动将它添加到我的项目中,GPS开始编译。这只是一个简单的例子,看看是否一切正常。刚开始学习编程。

WITH Gtk.Main ;          
USE Gtk.Main ;
WITH Gtk.Window ;        
USE Gtk.Window ;
WITH Gtk.Enums ;         
USE Gtk.Enums ;

PROCEDURE MaFenetre IS
win : Gtk_window ;
BEGIN
Init ;
Gtk_New(win,Window_Popup) ;
win.show ;
Main ;
END MaFenetre ;

这给了我这个错误:

  

gnatlink /Users/laurentlutgen/GPS/mafenetre.ali -o
  /用户/ laurentlutgen / GPS / mafenetre
  架构x86_64的未定义符号:
  “_ada_c_enum_value_size”,引自:   。
  。
  。
  “_pango_tab_array_new”,引自:         pango-tabs.o中的 pango _tabs__pango_new   ld:找不到架构x86_64的符号
  collect2:错误:ld返回1退出
  状态gnatlink:调用/ usr / local / gnat / bin / gcc时出错   gnatmake: * 链接失败   [2013-08-01 21:16:46]进程退出   状态4(经过时间:09.38s)

编译器抱怨的文件列表很长。

任何人都知道如何解决这个问题。

我使用AdaCore for MacOS X的最新版gnat(2013)。我使用的是MacOS 10.8。
GtkAda库是xadalib 2012。

由于

劳伦

2 个答案:

答案 0 :(得分:2)

从我看到的情况来看,gnatlink没有通过链接所需的库。你说你手动将GtkAda添加到你的项目中。通过这样做,您可能错过了GtkAda的*.gpr文件中指定的所有链接器选项,因此您的二进制文件不会与GTK +库链接。

我建议您尝试使用GPS查找已安装的GtkAda项目文件。您可以在启动GPS之前设置ADA_PROJECT_PATH来执行此操作。如果GtkAda位于GNAT GPL的默认路径中,它看起来像这样:

$ export ADA_PROJECT_PATH="/usr/local/gnat/lib/gnat"
$ gps

您说您使用的是在互联网上找到的预编译二进制文件。您是否知道GtkAda与GNAT GPL编译器捆绑在一起?你应该使用它,除非你想使用gtk-quartz作为后端(不需要X11)。如果是这种情况,您可能会发现使用gtk-quartz编译GPS的instructions I wrote很有帮助(正如Simon已经注意到的那样)。

如果您愿意,可以试试我的GPS port to OSX。默认情况下,它可以加载与GNAT GPL捆绑在一起的*.gpr个文件。在Usage页面上,您可以找到如果您在其他地方安装了GNAT,如何更改ADA_PROJECT_PATH的说明。

要获得进一步的帮助,您应该发布项目的*.gpr文件。

修改

我坚持认为:GtkAda实际上不包括在GNAT GPL发行版中。由于XmlAda被包含作为链接的项目,我确信GtkAda也是如此,但事实并非如此;所以使用XAdaLib似乎是最简单的选择。您必须将ADA_PROJECT_PATH指向XAdaLib的安装目录,而不是通常的GNAT,以便能够使用GtkAda。

答案 1 :(得分:1)

据我所知,AdaCore for G86的GPL都不具备生成 64位代码的能力。我想我在某个地方看到了那种效果,但不记得在哪里。


这个问题也出现在Doom3的Ada-port中,所以如果你能找到他,他可能肯定知道。