[fpc-pascal] Bug in $linklib?

Xiangrong Fang xrfang at gmail.com
Sun Sep 22 05:04:53 CEST 2013


Hi All,

I use $linklib to link my fpc program with a C++ so file.   I found that
the $linklib directive does NOT conform with ld specification.   This is
what I did and found:

PURPOSE

I want to link to a C library that does NOT start with "lib" prefix.  The
library's name is thostmduserapi.so

PROCEDURE

I tried to use {$linklib thostmduserapi}, fpc complains:

ld: cannot find -lthostmduserapi

If I rename thostmduserapi.so to libthostmduserapi.so, the problem is
solved, however this is exactly what I *don't* want -- add lib prefix to so
file.

After checking the ld man page, I learned that:

If namespec is of the form :filename, ld will search the library path for a
file called filename, otherwise it will search the library path for a file
called libnamespec.a.

So I tried: {$linklib :thostmduserapi.so}. This time, fpc complains:

ld: cannot find thostmduserapi

I added -st to fpc, and get the following in the generated link.res file:

INPUT(
-l:thostmduserapi
-lstdc++
-lgcc_s
)

I manually changed the script to -l:thostmduserapi.so, and it linked
without problem!

I think the process of generating link script is buggy, because it does not
conform with ld specification.

Regards,
Xiangrong
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.freepascal.org/pipermail/fpc-pascal/attachments/20130922/83315c90/attachment.html>


More information about the fpc-pascal mailing list