Ошибка компилятора Ada GPS IDE Неопределенные символы для архитектуры x86_64

Пытаюсь заставить GtkAda работать. Сам не скомпилировал библиотеку, у меня было много проблем, и, наконец, я нашел предварительно скомпилированную библиотеку в Интернете. Конечно, 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
/ Users / laurentlutgen / GPS / mafenetre
Неопределенные символы для архитектуры x86_64:
"_ada_c_enum_value_size", ссылка на которую имеется:

. .
.
"_pango_tab_array_new", ссылка на которую дана:
pango _tabs__pango_new в pango-tabs.o
ld: не найдены символы для архитектуры x86_64
collect2: error: ld возвратил 1 выход
status gnatlink: ошибка при вызове / usr / local / gnat / bin / gcc
gnatmake: ошибка ссылки *.
[2013-08 -01 21:16:46] процесс завершен со статусом 4 (прошедшее время: 09.38с)

Список файлов, на которые жалуется компилятор, довольно длинный.

Кто-нибудь знает, как это решить.

Я использую последнюю версию gnat (2013) от AdaCore для MacOS X. Я использую MacOS 10.8.
Библиотека GtkAda - xadalib 2012.

Спасибо

Лоран


ada
person user2643432    schedule 01.08.2013    source источник
comment
flyx работает над созданием GPS (приложение Gtk и Ada) для использования собственной системы отображения Quartz. а не XQuartz. Может быть полезно ...   -  person Simon Wright    schedule 02.08.2013


Ответы (2)


Из того, что я вижу, gnatlink не передаются библиотеки, необходимые для компоновки. Вы сказали, что добавили GtkAda в свой проект вручную. Сделав это, вы, вероятно, пропустили все параметры компоновщика, указанные в *.gpr файле GtkAda, поэтому ваш двоичный файл не будет связан с библиотекой GTK +.

Я предлагаю вам попробовать получить GPS, чтобы найти установленный файл проекта GtkAda. Вы можете сделать это, установив ADA_PROJECT_PATH перед запуском GPS. Если GtkAda находится в пути по умолчанию GNAT GPL, это выглядит так:

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

Вы сказали, что используете предварительно скомпилированный двоичный файл, который нашли в Интернете. Знаете ли вы, что GtkAda поставляется вместе с компилятором GNAT GPL? Вам следует использовать это, если вы не хотите использовать gtk-quartz в качестве бэкэнда (который не требует X11). В этом случае вы можете найти инструкции, которые я написал для компиляции GPS с помощью gtk-quartz ( как уже заметил Саймон).

Если хотите, можете попробовать мой порт GPS для OSX. По умолчанию он может загружать *.gpr файлы, связанные с GNAT GPL. На странице Использование вы найдете инструкции по изменению ADA_PROJECT_PATH, если вы установили ваш GNAT где-нибудь еще.

Для получения дополнительной помощи вы должны опубликовать *.gpr файл вашего проекта.

Изменить:

Я исправлюсь: GtkAda фактически не включен в дистрибутив GNAT GPL по какой-либо причине. Поскольку XmlAda включен как проект для связывания, я был уверен, что GtkAda тоже есть, но это не так; поэтому использование XAdaLib кажется самым простым вариантом. Вы должны указать ADA_PROJECT_PATH на каталог установки XAdaLib вместо обычного каталога GNAT, чтобы иметь возможность использовать GtkAda.

person flyx    schedule 02.08.2013
comment
Я пробовал ваши инструкции построить gps против кварца: работало до сих пор, пока это: jhbuild shell ‹build-gps.sh. Где мне это найти? mdfind / spotlight нигде не нашел. Я попробовал ваше связанное приложение вместе с модификацией ADA_PROJECT_PATH и, используя шаблон GtkAda, мой небольшой тест теперь не работает с сообщением: gprbuild: mafenetre.adb не является источником какого-либо проекта. То же самое для X11 gps. Я определил главный файл, и у моего проекта есть имя. Так что, возможно, некоторый прогресс. Наверное, скрывая какие-то другие проблемы. Кстати, как мне добавить пустое место к этому комментарию? Верните посты мой комментарий !? Спасибо - person user2643432; 02.08.2013
comment
build-gps.sh является частью моего репозитория git, в котором находится README, вам нужно сначала его клонировать. Однако, если вы зашли так далеко без ошибок, у вас уже должна быть рабочая установка GtkAda в ~/gtk/inst/lib/gnat, и вам действительно не нужно компилировать gps. Что касается вашей текущей ошибки, у вас должен быть for Source_Dirs use ("src"); или что-то в этом роде в вашем файле проекта. Проверьте, находится ли ваш фактический исходный файл в этом каталоге и имеет ли он имя mafenetre.adb - ошибка предполагает, что это не так. - person flyx; 03.08.2013
comment
Минимальное значение .gpr будет таким - в том же каталоге, что и mafenetre.adb. with "gtkada"; project Mf is for Main use ("mafenetre.adb"); end Mf; - person Simon Wright; 04.08.2013
comment
Я думаю, что испортил свой путь, и не знаю, что еще. убирать все. Возможно, это сработает, иначе это была моя последняя попытка с gtkada. Спасибо за терпеливость. - person user2643432; 05.08.2013

Насколько мне известно, ни один из GNAT под GPL от AdaCore для x86 не имеет возможности генерировать 64-битный код. Я думаю, что где-то читал что-то по этому поводу, но не могу вспомнить где.


Проблема также возникла в Ada-порте Doom3, поэтому, если вы найдете его, он может знать наверняка.

person Shark8    schedule 02.08.2013
comment
Для Mac OS X все они сконфигурированы с --build=x86_64-apple-darwin*, поэтому у них нет возможности генерировать 32-битный код. - person Simon Wright; 02.08.2013
comment
Не знал этого; Спасибо за информацию. (У меня нет / использую Mac, поэтому у меня никогда не было возможности поиграть с его реализацией GNAT.) - person Shark8; 02.08.2013
comment
Если у меня будет время, я попробую скомпилировать этот проект Doom3. Если я получаю ту же ошибку, это проблема с 32/64 битом, иначе это моя установка gps / gnat, которая ошибается. Сначала нужно решить новую проблему: gprbuild: mafenetre.adb не является источником какого-либо проекта. Возможно, за этим скрывается оригинал. - person user2643432; 03.08.2013