2015-05-24 60 views
3

我剛開始在我的MacOS上使用Java,並在使用javac編譯我的第一個.java文件時出現以下錯誤。dyld:找不到符號:_iconv在使用javac在MacOS上編譯時

dyld: Symbol not found: _iconv 
    Referenced from: /usr/lib/libcups.2.dylib 
    Expected in: /opt/local/lib/libiconv.2.dylib 
in /usr/lib/libcups.2.dylib 
Trace/BPT trap: 5 

任何人都可以解決問題嗎?

+0

聽起來你已將'DYLD_SEARCH_PATH'設置爲包含'/ opt/local/lib'的東西,其中包含了一個干擾同一個庫的系統副本的'libiconv.2.dylib'副本。我猜你安裝了macports?如果你未設置變量,那麼你應該能夠編譯Java程序。 – Petesh

+0

是的,你是對的。我已將DYLD_LIBRARY_PATH設置爲/ opt/local/lib和macports。我將這個DYLD_LIBRARY_PATH重置爲空並且它工作。 – cbear1985

回答

3

這是使用macports時的常見問題,並且您將DYLD_LIBRARY_PATH變量設置爲/opt/local/lib。 macport中有一些庫會干擾系統庫,當你在命令行時會導致程序在這種情況下無法啓動。

解決方法是取消設置shell的變量,但這會導致運行其他macports應用程序的問題。如果您剛剛從命令行運行,則可以在您的.bashrc中創建運行不帶變量的命令的函數,例如,

java() 
{ 
    env DYLD_LIBRARY_PATH= java "[email protected]" 
} 

和javac的相似等,這將讓你離開定義的變量,但是調用這些特定的命令行工具時,爲防止干擾。

我從macports搬到homebrew這是這方面的一個好一點的表現 - 它通常拒絕把東西在用系統庫干擾而不強制問題的路徑 - 這是一個個人選擇的事情,雖然,並不建議您切換。

相關問題