comp.lang.ada
 help / color / mirror / Atom feed
From: jeff.huter@bigfoot.com (Jeff)
Subject: Re: Link C main with Ada static library
Date: 29 Nov 2002 14:27:18 -0800
Date: 2002-11-29T22:27:18+00:00	[thread overview]
Message-ID: <fe4bb2c2.0211291427.4f2f6f1a@posting.google.com> (raw)
In-Reply-To: mailman.1038564541.20930.comp.lang.ada@ada.eu.org

Thanks.  This seems to do the trick.  However, it doesn't seem to be
completely in accord with the description in the GNAT User's Manual
for generating Ada libraries. In particular, the manual says to use
the -L switch with gnatbind.
Even in light of your solution, I have been unable to get it work
using -L switch of gnatbind as outlined in the manual. But, your
solution seems to work which is all that matters to me at this point.

Thanks again

-- Jeff

sk <sk@noname.com> wrote in message news:<mailman.1038564541.20930.comp.lang.ada@ada.eu.org>...
> Hi,
> 
> Tricky without seeing your "library" code, but this
> works, GNAT 3.15p, Linux-Mandrake 8.2.
> 
> -- static_ada_library.ads --
> package Static_Ada_Library is
> 
>      function Return_Forty_Two return Natural;
>      pragma Export (C, Return_Forty_Two, "return_forty_two");
> 
> end Static_Ada_Library;
> 
> -- static_ada_library.adb --
> package body Static_Ada_Library is
> 
>      function Return_Forty_Two return Natural is
>      begin
>          return 42;
>      end Return_Forty_Two;
> 
> end Static_Ada_Library;
> 
> -- main.c --
> extern int return_forty_two ();
> extern int adainit ();
> extern int adafinal ();
> 
> #include <stdio.h>
> 
> int main () {
> 
>      int i = 0;
> 
>      printf ("i => %d\n", i);
> 
> 
>      adainit ();
> 
>      i = return_forty_two ();
> 
>      adafinal ();
> 
>      printf ("i => %d\n", i);
> 
> };
> 
> 
> Now the build ...
> 
> # gnatmake -c static_ada_library
> # gnatbind -n static_ada_library
> 
> -- OR gnatbind -z ...
> 
> # gcc -c b~static_ada_library.adb
> # ar rc static_ada_library.a static_ada_library.o b~static_ada_library.o
> # gcc main.c static_ada_library.a -o c-test \
> /usr/gnat/lib/gcc-lib/i686-pc-linux-gnu/2.8.1/adalib/libgnat.a
> 
> # ./c-test
> i => 0
> i => 42
> 
> -- 
> The above is very CRUDE, but it should point you in the right
> direction.
> 
> Review your "ld" manual to see how to link against
> "libgnat.so" etc.
> 
> Good luck.
> 
> 
> -- For real address, merge vertically
> -------------------
> -- s n p @ t . o
> --  k i e k c c m
> -------------------



  reply	other threads:[~2002-11-29 22:27 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2002-11-29  8:45 Link C main with Ada static library Jeff
2002-11-29 10:04 ` sk
2002-11-29 22:27   ` Jeff [this message]
2002-11-29 23:25     ` sk
replies disabled

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox