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
next prev 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