[fpc-pascal] external .so linking in Linux w/2.5.1 rev 13680 (Sep 8 09)
Jonas Maebe
jonas.maebe at elis.ugent.be
Mon Sep 14 00:13:56 CEST 2009
On 13 Sep 2009, at 23:54, Michael Green wrote:
> Even if I were to specify:
>
> ...
> const
> FUSELIBFile = '/lib/libfuse.so.2';
> ...
>
> Then the link.res file tries to use:
> ...
> INPUT(
> -l/lib/libfuse
> )
> ...
>
> So, where's the rest of the library's name? Is it a bug?
No, this is intentional. Under Unix, the convention is that the
development libraries always have the default base name (i.e.,
libfuse.so in your case), and these are symbolic links to the library
against which you want to link. At link time, the linker follows this
link and encodes the name of the library that this link points to in
the binary (so it will also work on systems that do not have the
development libraries installed, and so that it will keep working
should you one day change you development libraries and thereby
implicitly change the version of the library to which the symbolic
link points).
The problem in your case is most likely that you do not have the fuse-
devel package (or something similar) installed, but only the plain
fuse package. The latter is all that's needed to run programs that
make use of the fuse library, but the former is required if you want
to compile/link programs against it. This is a general principle that
goes for all packages.
Jonas
More information about the fpc-pascal
mailing list