[sisyphus] GtkAda: gcc doesn't link with libgnat

Denis G. Samsonenko =?iso-8859-1?q?d=2Eg=2Esamsonenko_=CE=C1_gmail=2Ecom?=
Сб Сен 16 18:13:10 MSD 2006


Добрый день!

Пытаюсь собрать GtkAda-2.8.0, в том числе и в rpm. Вроде всё нормально
компилируется, ошибок никаких не выдаёт, но получаемые на выходе
libgtkada*.so.2.8 оказываются неслинкованными с libgnat, что приводит
к ругани ldd на unresolved symbols.

Мои попытки разобраться в ситуации привели к следующему. Я нашёл в
Makefile место, где происходит линковка создаваемых библиотек:

$(LIBNAME):: $(LIB_DIR)/$(MAKE_ADB).o ${wildcard ${LIB_DIR}/*.o} $(c_objects)
ifeq ($(BUILD_SHARED),yes)
        $(CC) -shared $(FPIC) $(OS_SPECIFIC_LINK_OPTIONS) -o $(SONAME) \
          $(SO_OPTS)$(SONAME) $(LIB_DIR)/glib*.o $(LIB_DIR)/gdk*.o \
          $(LIB_DIR)/gtk*.o $(LIB_DIR)/pango*.o \
          $(c_objects) $(c_extra_objects) $(GTK_LIBS)


Так это выгладит в выводе make:

gcc -shared -fPIC  -o libgtkada-2.8.so.0 \
          -Wl,-soname,libgtkada-2.8.so.0 lib-obj/glib*.o lib-obj/gdk*.o \
          lib-obj/gtk*.o lib-obj/pango*.o \
          lib-obj/misc.o lib-obj/misc_extra.o lib-obj/misc_broken.o
gtkextra/gtk*.o -lgtk-x11-2.0 -lgdk-x11-2.0 -latk-1.0 -lgdk_pixbuf-2.0
-lm -lpangocairo-1.0 -lpango-1.0 -lcairo -lgobject-2.0 -lgmodule-2.0
-ldl -lglib-2.0


Отсюда видно, что явного задания libgnat для линковки нету. Я не знаю,
нужно ли это делать, но я попытался прочто дописать в конец "-lgnat" и
собрать указанную библиотеку вручную. После такой операции ldd больше
не ругался на полученную библиотеку, а в его выводе присутствовала
ссылка на libgnat.

Отсюда у меня вопрос: надо ли мне пропатчить Makefile, дописав в
указанный кусок "-lgnat", или же надо как-то по другому заставить gcc
линковать с libgnat?


На всякий случай:

[denis на ogion ~]$ rpm -qa |grep gnat
libgnat4.1-4.1.1-alt6
libgnat4.1-devel-static-4.1.1-alt6
libgnat4.1-devel-4.1.1-alt6
gcc4.1-gnat-4.1.1-alt6

-- 
Всего доброго,

Денис.


Подробная информация о списке рассылки Sisyphus