2011-12-18 116 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