gtkada: перекомпилировать с -fPIC - PullRequest
1 голос
/ 02 августа 2020

(Crossposting из comp.lang.ada)

Я следую схеме плагина из примеров GNAT, используя GTK. Так что мне нужна gtkada, а для правильной работы с ней gtkada_contributions. С сайта Adacore я взял актуальные версии (2020) (двоичных) GNAT и gtkada. С сайта Дмитрия я взял исходный код gtkada_contributions.

Схема плагина требует создания автономных перемещаемых библиотек (загружаемых во время выполнения). Итак, для создания (на Linux) я вызываю с терминала:

   gtkada-env.sh
   export GTKADA_BUILD=relocatable
   gprbuild -Pbase

Мой файл проекта base.gpr с gtkada_contributions_lib.gpr, который является исходным файлом проекта со следующими дополнениями:

   for Library_Name use "gtkada_contributions";
   for Library_Dir use "lib";
   for Library_Kind use "relocatable";

Приведенная выше команда gprbuild теперь выдает:

Build Libraries
[gprlib]       gtkada_contributions.lexch
[link library] libgtkada_contributions.so
/opt/GNAT/2020/bin/../libexec/gcc/x86_64-pc-linux-gnu/9.3.1/ld: /home/frank/Lib/Ada/gtkada_contributions/gdk-color-ihls.o: relocation R_X86_64_32 against `.rodata' can not be used when making a shared object; recompile with -fPIC
/opt/GNAT/2020/bin/../libexec/gcc/x86_64-pc-linux-gnu/9.3.1/ld: /home/frank/Lib/Ada/gtkada_contributions/gdk-pixbuf-image.o: relocation R_X86_64_32 against symbol `gdk__pixbuf__image__rgb_imageT' can not be used when making a shared object; recompile with -fPIC

...

и множество других похожих строк.

Добавление -fPI C to gtkada_contributions_lib.gpr (переключатели компилятора) ничего не изменили, так что я предполагаю, что это gtkada или даже gtk, который нужно перекомпилировать. Самостоятельное продвижение вперед, вероятно, означает часы бесполезной работы с возможным результатом поломки моей системы.

Итак, как я могу скомпилировать / связать свой проект? Будут ли будущие проекты без перемещаемых библиотек компилироваться и компоноваться?

Заранее благодарим за любую подсказку.

1 Ответ

1 голос
/ 06 августа 2020

Наконец то получил. Похоже, что gtkada_contributions не были перекомпилированы после добавления ключа -fPI C в файл проекта. После включения флага -f (force) в команду gprbuild все было скомпилировано без ошибок.

...