(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, который нужно перекомпилировать. Самостоятельное продвижение вперед, вероятно, означает часы бесполезной работы с возможным результатом поломки моей системы.
Итак, как я могу скомпилировать / связать свой проект? Будут ли будущие проекты без перемещаемых библиотек компилироваться и компоноваться?
Заранее благодарим за любую подсказку.