dyld:未找到符号:_iconv使用javac在MacOS上编译时

时间:2015-05-24 06:22:41

标签: java macos compiler-errors dyld

我刚开始在MacOS上使用Java,在使用javac编译我的第一个.java文件时遇到以下错误。

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

有人能解决问题吗?

1 个答案:

答案 0 :(得分:3)

使用macport时这是一个常见问题,您将DYLD_LIBRARY_PATH变量设置为/opt/local/lib。 macports中有一些库可能会干扰系统库,当你在命令行使用时会导致程序无法启动。

解决方法是取消设置shell的变量,但这可能会导致运行其他macports应用程序的问题。如果您只是从命令行运行,则可以在.bashrc中创建运行命令的函数,而不使用变量,例如。

java() 
{ 
    env DYLD_LIBRARY_PATH= java "$@"
}

和javac等类似。这将允许您保留定义的变量,但在调用这些特定的命令行工具时可以防止干扰。

我已经从macports转移到homebrew,这在这方面表现得更好 - 它通常拒绝将事情放在干扰系统库的路径上而不会强迫问题 - 但这是个人选择的事情,并不建议你转换。

相关问题