[GHC] #11587: Place shared objects in LIBDIR
GHC
ghc-devs at haskell.org
Thu Sep 22 15:51:21 UTC 2016
#11587: Place shared objects in LIBDIR
-------------------------------------+-------------------------------------
Reporter: bgamari | Owner:
Type: bug | Status: new
Priority: normal | Milestone: 8.2.1
Component: Package system | Version: 7.10.3
Resolution: | Keywords:
Operating System: Unknown/Multiple | Architecture:
Type of failure: Runtime | Unknown/Multiple
performance bug | Test Case:
Blocked By: | Blocking:
Related Tickets: | Differential Rev(s):
Wiki Page: |
-------------------------------------+-------------------------------------
Comment (by rwbarton):
According to my experiments (I only tested on Debian x86_64 with GNU ld,
not gold) you can set up the NEEDED entry in that way if either
* `libHSpkgname-ver.so` was built with `-soname pkgname-ver-hash
/libHSpkgname-ver.so`, or
* `libHSpkgname-ver.so` was built without any `-soname` set, and you link
to it with
{{{
-L/home/me/.cabal/store -l:pkgname-ver-hash/libHSpkgname-ver.so
}}}
If you set a SONAME when building `libHSpkgname-ver.so`, then it seems to
be impossible to create a NEEDED entry of any other value when building a
library that has it as a dependency. So if the SONAME is `libHSpkgname-
ver.so`, you have to add the directory that the library lives in to the
run path, as far as I can tell. I don't know how portable any of this
behavior is.
GHC sets the SONAME to `libHSpkgname-ver.so`, originally due to
6efacfe8bcbe66dfc3b52397ccbd34a58890520d. I don't know if it would be okay
to unset it or to include the directory name in the SONAME. In any case it
seems simplest to solve the problem by just putting all the shared
libraries in the same directory...
--
Ticket URL: <http://ghc.haskell.org/trac/ghc/ticket/11587#comment:8>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler
More information about the ghc-tickets
mailing list