[fpc-pascal] external .so linking in Linux w/2.5.1 rev 13680 (Sep 8 09)

Michael Green myatus at googlemail.com
Sun Sep 13 23:54:52 CEST 2009


Hi All!

I've noticed that someone made a headstart with a unit to bind with FUSE 
in FreePascal at http://bugs.freepascal.org/view.php?id=12218. I've 
taken the last two entries (FUSE-2008-12-20-3.PP and 
Test-2008-12-20-3.PP) and modified the test file on line 88 to use the 
move() function instead of memcpy() -- and so eliminating the need for 
the "libc" unit. It compiles, but it fails at linking with this error:

...
Linking Project1
/usr/bin/ld: cannot find -lfuse
...

Okay, strange, nowhere do I see "fuse" specified. But upon closer 
inspection, it turns out something this gets lost in translation. For 
example, in the FUSE-2008-12-20-3.PP file, it contains:

...
const
  FUSELIBFile = 'libfuse.so.2';

function fuse_main_real(aARGC : Integer; aARGV: PPChar; aOperations : 
TOperationsP; aOperationsSize : size_t; aUserData : Pointer) : Integer; 
cdecl; external FUSELIBFile;
...

But in the link.res file I see:

...
INPUT(
-lfuse
)
...

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? Did I make a 
mistake on my end? ( And yes, that library is actually available on my 
system )

As noted in the subject, I'm using FPC 2.5.1 SVN rev 13680 from 
September 8th, x86_64 Linux (ppcrossx64). Kernel: 2.6.28-15-generic 
#49-Ubuntu SMP Tue Aug 18 19:25:34 UTC 2009 x86_64 GNU/Linux

-- MG






More information about the fpc-pascal mailing list