Executable

使用 D 編譯器時無法打開共享對象文件

  • June 2, 2011

我從原始碼編譯了ldc2gdc並一直工作到一個月前。什麼都沒有改變,除了我不記得我會在終端中設置的讓 ldc2 和 gdc 工作的變數。

嘗試編譯 D 原始碼時出現以下錯誤;使用 gdc ( $ /home/Code/D/gdc/Bin/usr/local/bin/gdc -o t4 t4.d):

/home/Code/D/gdc/Bin/usr/local/bin/../libexec/gcc/x86_64-unknown-linux-gnu/4.4.5/cc1d: error while loading shared libraries: libmpfr.so.1: cannot open shared object file: No such file or directory

使用 ldc2 ( /home/Code/D/ldc2/bin/ldc2 -o t4 t4.d):

/home/Code/D/ldc2/bin/ldc2: error while loading shared libraries: libconfig++.so.8: cannot open shared object file: No such file or directory

我不記得它只是對 PATH 的補充還是對 DFLAGS 的補充。有任何想法嗎?

在這裡你甚至不能執行編譯器執行檔,因為它找不到它需要的庫。gdc正在尋找libmpfr.so.1並且ldc2正在尋找libconfig++.so.8

如果這些庫仍然存在於您的系統上,也許在 中/home/Code/D/gdc/Bin/usr/local/lib,您可以將該目錄添加到LD_LIBRARY_PATH環境變數中(在大多數 unice 上;在 Mac OS X 上,該變數稱為DYLD_LIBRARY_PATH)。

LD_LIBRARY_PATH=/home/Code/D/gdc/Bin/usr/local/lib gdc …

您可能想要編寫包裝腳本來執行gdcand ldc2,或者將其放入您的~/.profile:

export LD_LIBRARY_PATH=/home/Code/D/gdc/Bin/usr/local/lib

如果這些庫在/usr/lib系統升級中出現並消失,您將不得不恢復所需的版本,或者為新版本的庫重新編譯 D 工具。

引用自:https://unix.stackexchange.com/questions/14205