我正在尝试使用gprbuild构建一个静态库。该库没有main(用C语言编写并在后期链接)并且必须是自包含的,据我所知,gpr术语是“独立”,这意味着,它不需要链接在运行时期间包括运行时的任何内容。
我的gpr看起来像这样
python -m ipykernel install --user --name myenv --display-name "Python (myenv)"
当我运行gprbuild时,我在日志中看到不包含对绑定器的调用:
select quotenumber, max(revision )
from quotenumberlogbob
WHERE LEFT(`quotenumber`, 2) = '$year'
group by quotenumber
我的问题是结果from flask_sqlalchemy import SQLAlchemy
没有导出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;
和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
:
答案 0 :(得分:1)
如果您的库不需要是静态的,而只是为了自包含(即在其自身中包含Ada运行时的必要部分),您可以说
for Library_Kind use "dynamic";
for Library_Interface use ("One_Of_Your_Units");
for Library_Standalone use "encapsulated";
(你必须有一个Library_Interface
,但我不认为它必须包含所有导出C-visible符号的单位。)
不幸的是,正如您所指出的,这对静态库不起作用。