comp.lang.ada
 help / color / mirror / Atom feed
From: Ludovic Brenta <ludovic@ludovic-brenta.org>
Subject: Re: Shared library in Ada
Date: Sat, 19 Apr 2008 15:39:38 +0200
Date: 2008-04-19T15:39:38+02:00	[thread overview]
Message-ID: <878wzaj751.fsf@ludovic-brenta.org> (raw)
In-Reply-To: fucplb$thf$1@registered.motzarella.org

Sebastien <seb.morand@gmail.com> writes:
>> Yes I'm running Gnat on FreeBSD.
>> Thanks about this link, I didn't know.
>
> I follow the instruction and did the sample thing:

[snipped]

- Since both your library and your test program are in Ada, you don't
  need pragma Import or pragma Export.

- You do not need to duplicate the mylib.ads file.

- If you're going to use project files, you should go all the way and
  define a library project file for your library, and use that to
  build the library.

The library:

package My_Lib is
   pragma Preelaborate;
   procedure Print;
end My_Lib;

with Ada.Text_IO;
package body My_Lib is
   procedure Print is
   begin
      Ada.Text_IO.Put_Line ("Hello, World.");
   end Print;
end My_Lib;

project My_Lib is
   for Source_Dirs use ("my_lib");
   for Object_Dir use "my_lib.o";
   for Library_Name use "mylib";
   for Library_Kind use "dynamic";
   for Library_Dir use "lib";
   for Externally_Built use "false";
end My_Lib;

You then build the library like this:

gnatmake -Pmy_lib

This will produce ./lib/libmylib.so.

Then, the client:

with My_Lib;
procedure Main is
begin
   My_Lib.Print;
end Main;

with "my_lib";
project Main is
   for Source_Dirs use (".");
   for Main use ("main");
end Main;

You would build your client program like this:

gnatmake -Pmain

which will link main dynamically with lib/libmylib.so.

-- 
Ludovic Brenta.



  reply	other threads:[~2008-04-19 13:39 UTC|newest]

Thread overview: 9+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2008-04-19 11:27 Shared library in Ada Sebastien
2008-04-19 11:41 ` Georg Bauhaus
2008-04-19 11:51   ` Sebastien
2008-04-19 15:31     ` Robert A Duff
2008-04-19 11:52 ` Ludovic Brenta
2008-04-19 11:55   ` Sebastien
2008-04-19 12:47     ` Sebastien
2008-04-19 13:39       ` Ludovic Brenta [this message]
2008-04-21 10:09         ` Sébastien
replies disabled

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