[Openmcl-devel] Error: Can't resolve foreign symbol "sinf"

R. Matthew Emerson rme at clozure.com
Mon Dec 12 12:46:40 PST 2011

On Dec 12, 2011, at 1:28 AM, Gary Byers wrote:

> On Sun, 11 Dec 2011, Otto Diesenbacher wrote:
>> Gary Byers <gb at clozure.com> writes:
>> thanks for your answer!
>> yep, it gives a null-pointer:
>> Welcome to Clozure Common Lisp Version 1.8-dev-r15129M-trunk  (LinuxX8664)!
>> ? (with-cstrs ((name "sinf"))
>>   (#_dlsym #$RTLD_DEFAULT name))
>> #<A Null Foreign Pointer>
>> Stable Release 1.7 works fine:
>> Welcome to Clozure Common Lisp Version 1.7-r14925M  (LinuxX8664)!
> I had installed Ubuntu 11.10 on a machine here, but hadn't updated
> the installed packages since I did so.  The linker (I assume) seems
> to have changed; traditionally, if a shared library was referenced
> in the call to the linker, the application was linked to refer to
> the library (regardless of whether or not it referenced anything that
> was defined in that library); some recent change to the linker seems
> to cause the library to be quietly omitted if there are no references
> to symbols that it defines.
> [...]
> I don't know whether the old behavior was documented or intentional
> or whether the change is documented or intentional or whether there
> are linker options to control it.

There appears to be a linker option named --as-needed.  With this
option in effect, libfoo will not be linked even if we specify -lfoo.

According to https://wiki.ubuntu.com/OneiricOcelot/ReleaseNotes, the
option --as-needed is now the default on Ubuntu 11.10.

It's possible to turn this behavior off.  The release notes above mention

So, we could say -Wl,--no-as-needed to the link command line instead of
adding explicit references to sinf or exp or whatever.  I hesitate to
use the word "aesthetic" with any of this, but I personally find the
use of -Wl,--no-as-needed somewhat more aesthetically appealing (in a
relative sense).

More information about the Openmcl-devel mailing list