OSX 10.12.6终端运行Octave触发std::out_of_range错误求助
解决OS X 10.12.6下Octave启动报错
std::out_of_range的问题 结合你遇到的情况——运行octave时触发libc++abi.dylib: terminating with uncaught exception of type std::out_of_range: basic_string并最终崩溃,且重装brew版Octave无效,再加上你替换了部分GNU工具的背景,试试下面这些针对性的解决方案:
方案1:排查环境变量冲突
你替换过Mac原生工具,大概率是PATH里的第三方GNU工具(比如GCC相关组件)和Octave依赖的系统库版本不兼容。
- 先临时重置PATH为系统默认值,再启动Octave测试:
如果这样能正常启动,说明是PATH里的第三方工具导致了冲突。你需要逐一排查PATH="/usr/bin:/bin:/usr/sbin:/sbin" octavegcc、g++这类工具的版本,调整PATH顺序或者移除冲突的工具即可。
方案2:清理Octave用户配置文件
Octave的本地配置文件可能损坏,导致启动时读取出错:
- 先备份当前配置文件:
mv ~/.octaverc ~/.octaverc.bak mv ~/.config/octave ~/.config/octave.bak - 重新启动Octave,如果恢复正常,再逐步恢复备份的配置文件,排查哪一行配置引发了问题。
方案3:修复XCode Command Line Tools
你的XCode 9.2和OS X 10.12.6是兼容的,但Command Line Tools可能存在损坏:
- 先卸载现有工具:
sudo rm -rf /Library/Developer/CommandLineTools - 重新安装:
xcode-select --install - 安装完成后,重新安装Octave:
brew reinstall octave
方案4:尝试安装Octave旧版本
brew默认的Octave新版本可能对OS X 10.12.6的支持不够友好,试试安装旧版本:
- 先查看brew可用的Octave旧版本:
brew search octave - 如果有4.4系列这类旧版本,执行安装:
brew install octave@4.4 - 最后强制链接该版本:
brew link --force octave@4.4
如果以上方案都无效,你可以通过otool -L $(which octave)查看Octave依赖的库路径,确认是否有第三方库替换了系统默认的stdc++/libc++库,这也是常见的崩溃诱因。
内容的提问来源于stack exchange,提问作者Changsheng Liu
相关产品推荐
相关产品推荐

