comp.lang.ada
 help / color / mirror / Atom feed
From: Martin Klaiber <martinkl@zedat.fu-berlin.de>
Subject: Re: Debian Sarge: problem with libgnat.so
Date: Sat, 24 Dec 2005 00:35:05 +0100
Date: 2005-12-24T00:35:05+01:00	[thread overview]
Message-ID: <96eu73-n92.ln1@martinkl.dialup.fu-berlin.de> (raw)
In-Reply-To: 87acesouf8.fsf@ludovic-brenta.org

Ludovic Brenta <ludovic@ludovic-brenta.org> wrote:

> I suggest that you hide libgnat from C programmers.  To do this, you
> link your shared library with libgnat; unfortunately, as things stand
> now, you must use the full path for that, like so:

> # -*- Makefile -*- snippet
> adalib:=/usr/lib/gcc-lib/`gnatgcc -dumpmachine`/`gnatgcc -dumpversion`/adalib

> libopensteuer.so.$(major).$(minor): $(OBJECT_FILES)
>        gnatgcc -shared -o $@ $(OBJECT_FILES) \
>           -L$(adalib) -lgnat -Wl,--soname,libopensteuer.so.$(major)

Ok, I've modified my Makefile.  It doesn't look exactly like yours but
should provide the same functionality.  Here the relevant parts:

  MAIN = libopensteuer
  SOURCE = *.ad[bs] *.h
  GNAT_LIB = /usr/lib/gcc-lib/i486-linux/2.8.1/adalib/libgnat.so

  SHARED = $(MAIN).so
  SHARED_API = $(SHARED).$(API)
  SHARED_VERSION = $(SHARED_API).$(VERSION)

  # Compile:

  .PHONY: default
  default:
          gnatmake $(MAIN) -c -fPIC -m -O3 -largs

  # Build the library:

  .PHONY: shared
  shared: default
          gnatgcc -shared -L$(GNAT_LIB) -lgnat -Wl,-soname,$(SHARED_API) -o $(SHARED_VERSION) *.o

But this only moves the problem one step forward :-/

  gnatmake libopensteuer -c -fPIC -m -O3 -largs
  gnatmake: objects up to date.
  gnatgcc -shared -L/usr/lib/gcc-lib/i486-linux/2.8.1/adalib/libgnat.so -lgnat -Wl,-soname,libopensteuer.so.0 -o libopensteuer.so.0.2004.3 *.o
  ld: cannot find -lgnat

Is my system broken?  Do you have an idea, why gnatgcc doesn't find
libgnat?

On the other hand, I don't want to use gnatgcc really, because there
are systems out without gnatgcc (SuSE IIRC).  So, I think, I will use
the other option: ask the user if I should create /usr/lib/libgnat.so
if it is missing.

> As to portability, the only standard layout for Ada files is the GNU
> Ada Environment Specification[1].  It might be worthwhile to see if we
> can improve this standard.  Also, the only GNU/Linux distribution I
> know of that conforms to this standard is Debian.

Indeed.  But the paper doesn't mention a situation as we might have in
my case: somebody installs the libraries needed for this program (for
instance by a package-manager which only does the default installation,
i.e. no extra creation of links).

But this person does not install the Ada-compiler, as he only wants to
build a C-program using my library.  So he would only have $(CC), and
as you said, C-compilers would look in /usr/lib vor libgnat.so, not in
/usr/lib/gcc-lib/...

Doesn't this mean that we always should have /usr/lib/libgnat.so?

Or, to ask the other way round: is there a special reason why we don't
have this link in /usr/lib?

Martin



  parent reply	other threads:[~2005-12-23 23:35 UTC|newest]

Thread overview: 9+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2005-12-22 21:12 Debian Sarge: problem with libgnat.so Martin Klaiber
2005-12-22 23:35 ` Ludovic Brenta
2005-12-23  0:15   ` Martin Klaiber
2005-12-23 12:43     ` Ludovic Brenta
2005-12-23 16:10       ` Georg Bauhaus
2005-12-23 23:35       ` Martin Klaiber [this message]
2005-12-24  0:23         ` Ludovic Brenta
2005-12-27 12:23           ` Martin Klaiber
2005-12-27 15:43             ` Ludovic Brenta
replies disabled

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