Como criar um ada lib.a e vincular a C

Estou tentando criar uma biblioteca ada e tentei algumas coisas diferentes. Eu tentei compilar o projeto usando makefiles e tentando criar uma biblioteca a partir de todos os arquivos .o Isso parecia não funcionar como esperado. Em seguida, solicitei suporte ao adacore e eles me indicaram a direção do uso de arquivos .gpr nos projetos ada e c e no ada.gpr que deve criar uma biblioteca. Isso quase funcionou, mas quando ele tenta compilar o ada, recebo referências indefinidas.

O que eu tentei: Linha de comando:

ar rc libmy_lib.a *.o

e quando eu tento ler o que está na lib

ld libmy_lib.a

Eu recebo este erro ld: aviso: não é possível encontrar o símbolo de entrada _start; não definindo endereço inicial

Arquivos de projeto: Meu arquivo de projeto 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;

Meu arquivo de projeto 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;

Quando executo o comando gprbuild c_main.gpr

Eu recebi 2 erros diferentes: primeiro sendo referências indefinidas para alguns pacotes que fazem parte do meu código ada e que, nos arquivos gnat .adb, eu não sabia que existiam. Biblioteca tão quebrada que eu acho. Segundo: os campos de certos pacotes não podem ser encontrados / não existem, mesmo que o código seja compilado e executado. Isso me dá erros informando que os campos não existem no código ada.

TLDR: Eu tenho um projeto ada em 3 diretórios diferentes e quero criar uma biblioteca a partir deles. Em seguida, vincule a um programa de teste C. Por fim, só tenho que entregar o arquivo da biblioteca. Linha de comando seria melhor. Eu não quero lidar com arquivos de projeto.

questionAnswers(1)

yourAnswerToTheQuestion