[GHC] #10492: rpath & shared libraries in ghc 7.10.1

GHC ghc-devs at haskell.org
Fri Jun 5 15:08:01 UTC 2015


#10492: rpath & shared libraries in ghc 7.10.1
-------------------------------------+-------------------------------------
              Reporter:              |             Owner:
  artella.coding                     |            Status:  new
                  Type:  bug         |         Milestone:  7.10.2
              Priority:  high        |           Version:  7.10.1
             Component:  Compiler    |  Operating System:  Linux
              Keywords:              |   Type of failure:  Runtime crash
          Architecture:              |        Blocked By:
  Unknown/Multiple                   |   Related Tickets:
             Test Case:              |
              Blocking:              |
Differential Revisions:              |
-------------------------------------+-------------------------------------
 Suppose that I have :

 {{{#!hs
 //test.h
 int add(int a, int b);
 }}}

 {{{#!hs
 //test.c
 int add(int a, int b){
   return (a + b);
 }
 }}}


 {{{#!hs
 //mylib.c
 #include "test.h"

 int testAdd(){
   return add(2,3);
 }
 }}}

 Then I compile via :

 {{{#!hs
 gcc -shared -o libDir/libtest.so test.c
 gcc -fPIC -c mylib.c -o mylib.o
 gcc -shared -o libDir/libMy.so mylib.o -L./libDir -l test
 -Wl,-rpath=./libDir
 }}}

 Then I have Main.hs with :

 {{{#!hs
 module Main where
 import Foreign.C.Types

 foreign import ccall "testAdd" c_testAdd :: CInt -> CInt -> IO (CInt)

 main = do
   result <- c_testAdd 3 4
   print result
 }}}

 and I have the associated cabal file :

 {{{#!hs
 name:                illustrate
 version:             0.1.0.0
 build-type:          Simple
 cabal-version:       >=1.10

 executable illustrate
   main-is:             Main.hs
   build-depends:       base >=4.8 && <4.9
   default-language:    Haskell2010
   extra-libraries:     test My
   extra-lib-dirs:      ./libDir
 }}}

 Then `cabal repl` works fine, but upon `cabal run` we get the following
 error :

 {{{
 cabal run
 Preprocessing executable 'illustrate' for illustrate-0.1.0.0...
 [1 of 1] Compiling Main             ( Main.hs, dist/build/illustrate
 /illustrate-tmp/Main.o )
 Linking dist/build/illustrate/illustrate ...
 Running illustrate...
 /home/linux/Downloads/illustrate_withDir/dist/build/illustrate/illustrate:
 error while loading shared libraries: libtest.so: cannot open shared
 object file: No such file or directory
 }}}

 In https://ghc.haskell.org/trac/ghc/ticket/10442#comment:8 trommler
 mentions that the problem arises because `-rpath` is not fed as an
 argument for `libtest.so` during linking.

--
Ticket URL: <http://ghc.haskell.org/trac/ghc/ticket/10492>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler


More information about the ghc-tickets mailing list