Skip to content

Avoid libraries if unneeded (librt, libdl, libpthread)

I have GHC on an unusual system [1]

libdl.so.1, librt.so.1 and some others are "filter libraries": they do not provide real functions (almost all is in libc.so.1), but to make thing work libFOO.so are GNU ld linker scripts: thus linking is successful, libFOO.so.1 is not linked in :-)

Unfortunately, runtime linker (ld.so.1) does not understand GNU ld linker scripts. And I get errors like this:

# ghci -package unix
GHCi, version 7.6.3: http://www.haskell.org/ghc/  :? for help
Loading package ghc-prim ... linking ... done.
Loading package integer-gmp ... linking ... done.
Loading package base ... linking ... done.
Loading package array-0.4.0.1 ... linking ... done.
Loading package deepseq-1.3.0.1 ... linking ... done.
Loading package bytestring-0.10.0.2 ... linking ... done.
Loading package old-locale-1.0.0.5 ... linking ... done.
Loading package time-1.4.0.1 ... linking ... done.
Loading package unix-2.7.0.0 ... <command line>: can't load .so/.DLL for: /usr/lib/gcc/x86_64-pc-solaris2.11/4.7/../../../x86_64-illumos/libdl.so (ld.so.1: ghc: fatal: /usr/lib/gcc/x86_64-pc-solaris2.11/4.7/../../../x86_64-illumos/libdl.so: unknown file type)

The unix package v2.6 had the same issue with librt.so too, in version 2.7 libdl.so remains.

I use the attached patch for GHC 7.6.3 to fix this issue.

In general I suggest to use AC_SEARCH_LIBS instead of AC_CHECK_LIB

[1] http://osdyson.org

Trac metadata
Trac field Value
Version 7.6.3
Type Bug
TypeOfFailure GhcDoesn'tWork
Priority normal
Resolution Unresolved
Component libraries/unix
Test case
Differential revisions
BlockedBy
Related
Blocking
CC
Operating system
Architecture
Edited by ip1981
To upload designs, you'll need to enable LFS and have an admin enable hashed storage. More information