macOS Mojave(10.14.4)系统Octave 5.1.0使用pause()函数无法响应按键事件

目前 ( 2019/04/24 ),在 macOS Mojave (10.14.4)系统上使用 brew install octave ,安装 Octave 5.1.0 之后,使用 pause() 函数无法在点击键盘之后继续执行,除了 Ctrl + C 之外任意键都不响应。正常情况下,点击任意按键之后,应该继续执行后续的代码。

这个是目前使用 brew 安装的 Octave 5.1.0 在编译的时候,关联的库是 glibc 2.28 之后的版本。这个版本上 glibc 2.28 的某些行为发生变动。具体的讨论信息,参考 bug #55029: pause() with no arguments does not return like kbhit() with glibc 2.28 上的讨论。本质就是 glibc 2.28 之后的版本要求应用程序在接收信息结束( EOF )之后,主动调用 clearerr (stdin); ,否则会收不到后续的按键通知。这个 BUGOctave 5.2 版本被修复,但是这个版本何时发布,暂时不定。

目前的修复方式为要求 brew 从最新版本的代码编译安装,而不是安装已发布版本,如下:

修改下载的编译配置文件,并且关闭文档编译( 目前文档编译会失败),也就是增加  --disable-docs 这个编译参数。

调整之后的编译脚本如下:

参考链接


发布者

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注