[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