我正在尝试创建一个Ada库,并尝试了几种不同的方法。
我已经尝试使用makefiles编译项目,并尝试从所有.o文件创建库。
这似乎没有按预期工作。
然后我向adacore支持人员寻求帮助,他们指导我使用.gpr文件来处理ada和c项目,在ada.gpr中进行设置,以创建库。这几乎起作用了,但在尝试编译ada时出现了未定义的引用。
我尝试过的方法: 命令行:
我遇到了这个错误 ld: 警告: 找不到入口符号_start; 没有设置起始地址
项目文件: 我的ada项目文件prj.gpr
我尝试过的方法: 命令行:
ar rc libmy_lib.a *.o
当我尝试读取库中的内容时
ld libmy_lib.a
我遇到了这个错误 ld: 警告: 找不到入口符号_start; 没有设置起始地址
项目文件: 我的ada项目文件prj.gpr
project Prj is
for Source_Dirs use ("source1/", "source2", ....);
for Object_Dir use ".";
for Languages use ("Ada");
for Library_Name use "test";
for Library_Dir use "lib";
for Library_Interface use (
--All my ada packages
);
package Naming is
for Spec_Suffix ("ada") use ".1.ada";
for Body_Suffix ("ada") use ".2.ada";
for Separate_Suffix use ".2.ada";
for Dot_Replacement use ".";
end Naming;
package Compiler is
for Default_Switches ("ada") use ("-v", "-g", "-gnato", "-gnatwa", "-gnatQ", "-gnat05");
end Compiler;
package Builder is
for Global_Compilation_Switches ("Ada") use ("-gnat95");
end Builder;
package Ide is
end Ide;
end Prj;
我的C项目文件c_main.gpr
with "prj.gpr";
project C_Main is
for Source_Dirs use ("source_c_1/", "source_c_2/");
for Languages use ("C");
for Main use ("source_c_1/main.c");
end C_Main;
当我运行命令gprbuild c_main.gpr时,出现了两个不同的错误:
第一个是未定义的引用一些包,这些包是我的ada代码的一部分,并在gnat.adb文件中,我不知道它们存在。所以我推断是损坏的库。
第二个错误是某些包的字段无法找到/不存在,尽管代码编译正常并且可以运行。它会给出错误,说明ada代码中的字段不存在。
library project prj is
来确认它是一个库项目。 - Simon Wright