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

2020年5月4日 18点热度 0条评论

我刚刚开始在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

谁能解决这个问题?

解决方案如下:

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

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

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

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

我已经从
macports移到
homebrew,这在这方面表现更好-它通常拒绝将东西放置在干扰系统库的路径中而不强制问题-尽管这是个人选择,但不是建议您进行切换。