2011-12-18 113 views
2

每当我尝试用ghc编译一个可执行文件--make,我在尝试执行程序后出现以下错误,尽管没有错误编译:GHC - 越来越奇怪的动态链接器错误(libffi.so.4)

./main: error while loading shared libraries: libffi.so.4: cannot open shared object file: No such file or directory 

下面是用来工作的一个小例子程序,但现在没有(我不知道为什么)(如果我加载程序到ghci的,虽然它工作正常)

module Main(main) 
where 

main = do c <- getContents 
      putStr c 

我在Ubuntu 11.10上使用GHC 7.0.3。帮助将不胜感激。

更新:从包管理器中删除并重新安装也没有解决它。我有libffi5和libffi6,我怎样才能让ghc使用其中的一个而不是libffi4?

+0

您是如何安装GHC的?在Ubuntu 11.10上,libffi.so.5和libffi.so.6通常是出货的,所以看起来你正在链接错误的动态库。 – 2011-12-18 17:01:06

+0

我其实只是在包管理器中安装了一个。我想有些设置某处出了问题。我想我现在只会尝试重新安装。 – Cubic 2011-12-18 18:14:26

回答

1

我现在通过复制libffi.so.5并将副本重命名为libffi.so.4来解决问题 - 有点肮脏的黑客,但是因为我现在不打算分发二进制文件,所以我不介意只要它有效。尽管如果有人能够给我一个更好的解决方案,我仍然会更喜欢。

+1

以同样的方式,你可以创建一个符号链接而不是复制,即ln -s /usr/lib/libffi.so.5 /usr/lib/libffi.so.4 – tmatth 2012-08-04 12:10:59

+0

当时我还是很新的到Ubuntu,并不知道这一点。在新版本中没有像这样的问题。 – Cubic 2012-08-04 18:54:05