[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