1
我正在尝试使用gprbuild构建静态库。图书馆没有一个main(用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被链接,但从来没有调用它? –