Я пытаюсь построить статическую библиотеку, используя gprbuild. В библиотеке нет основной (которая написана на C и связана на более позднем этапе) и должна быть автономной, насколько я понимаю, термин gpr для этого является «автономным», что означает, что не требуется связывать с чем-либо, включая время выполнения во время выполнения.Построение статической автономной библиотеки с gprbuild
Мой GPR выглядит следующим образом
project Ada_Foo_Lib is
for Source_Dirs use ("src");
for Object_Dir use "obj";
for Library_Dir use "lib";
for Library_Name use "ada_foo_lib";
for Library_Kind use "static";
package Binder is
for Default_Switches("Ada") use ("-n");
for Required_Switches ("Ada") use ("-n");
end Binder;
end Ada_Foo_Lib;
Когда я бегу gprbuild, я вижу в журнале, который не включает в себя вызов вяжущего:
gnatmake -Pada_foo_lib.gpr --create-missing-dirs
gcc-4.9 -c -I- -gnatA /home/temp/src/ada_foo_pack.adb
building static library for project ada_foo_lib
ar cr /home/temp/lib/libada_foo_lib.a /home/temp/obj/ada_foo_pack.o
ranlib /home/temp/lib/libada_foo_lib.a
Моя проблема в том, что в результате libada_foo_lib.a
не имеет adainit
и adafinal
экспорт. Я попытался связать его, а также проверить с помощью objdump
.
Я перепробовал все виды комбинаций переключателей, но ничего не сделал вяжущего называть, если я не изменил в Library_Kind
на dynamic
и использовать Library_Standalone
:
Можно ли добавить заглушку «main», чтобы заставить «adainit» и «adafinal» быть связанными, но не называть их? –