2013-08-01 81 views
2

試圖讓GtkAda正常工作。沒有自己編譯lib,遇到很多問題,最後我在互聯網上找到了一個預編譯的庫。當然GPS甚至在將它添加到我的路徑後仍然找不到它...Ada GPS IDE編譯器錯誤架構x86_64的未定義符號

因此,我手動將它添加到我的項目中,並且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
/Users/laurentlutgen/GPS/mafenetre
Undefined symbols for architecture x86_64:
"_ada_c_enum_value_size", referenced from:
.
.
.
"_pango_tab_array_new", referenced from:
pango_tabs__pango_new in pango-tabs.o
ld: symbol(s) not found for architecture x86_64
collect2: error: ld returned 1 exit
status gnatlink: error when calling /usr/local/gnat/bin/gcc
gnatmake: * link failed.
[2013-08-01 21:16:46] process exited with status 4 (elapsed time: 09.38s)

編譯器會抱怨的文件列表大約相當長,所以。

任何一個想法如何解決這個問題。

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

感謝

洛朗

+0

flyx [正在製作](https://github.com/flyx/gps-osx)構建GPS(Gtk和Ada應用程序)以使用本機Quartz顯示系統而不是XQuartz。可能是有用的...... –

回答

1

據我所知,沒有從AdaCore的GPL的蚊蚋爲86的有能力產生 64位代碼。我想我在某處讀了一些這樣的東西,但不記得在哪裏。


問題在毀滅戰士的小梅口也來了,所以如果你能找到他,他可能會知道。

+0

對於Mac OS X,它們都是用'--build = x86_64-apple-darwin *'配置的,所以它們沒有生成* 32位*代碼的能力。 –

+0

不知道,謝謝(你的)信息。 (我沒有/使用Mac,所以我從來沒有機會使用它的GNAT實現。) – Shark8

+0

如果我有時間我會嘗試編譯這個Doom3項目。如果我得到相同的錯誤,這是一個32/64位的問題,否則它是我的gps/gnat安裝被竊聽。首先必須解決新問題:gprbuild:「mafenetre.adb」不是任何項目的來源。也許這隱藏了原來的一個。 – user2643432

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)。如果是這樣的話,你可能會發現instructions I wrote用於gtk-quartz編譯GPS有幫助(正如西蒙已經提到的)。

如果你願意,你可以試試我的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。

+0

我試過你的指令,建立gps對石英:迄今爲止工作,直到這:jhbuild shell user2643432

+0

'build-gps.sh'是我的git倉庫的一部分,README所在的位置,你必須先克隆它。但是,如果你沒有錯誤地到達那裏,你應該已經在'〜/ gtk/inst/lib/gnat'中安裝了GtkAda,並且你不需要編譯gps。關於你當前的錯誤,你應該有一個'for Source_Dirs use(「src」);'或者你的項目文件中的東西。檢查您的實際源文件是否位於該目錄中,名稱爲'mafenetre.adb' - 錯誤表明它不是。 – flyx

+0

最小的'.gpr'就是這個 - 與'mafenetre.adb'在同一個目錄下。 '與「gtkada」; 項目Mf爲 主要用途(「mafenetre.adb」); 結束Mf;' –

相關問題