[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