macos - 如何在 os x、centos 6 上构建 goncurses

标签 macos go centos ncurses

OS X、Centos 6 和 Debian Squeeze 都带有 v5.7 的 ncurses,但 go 包装器“goncurses”需要 5.9。尝试在任何这些平台上构建它都会给您这样的错误:

$ go get -v code.google.com/p/goncurses
code.google.com/p/goncurses
# code.google.com/p/goncurses 
/tmp/go-build527609801/code.google.com/p/goncurses/_obj/goncurses.o: 
In function 'ncurses_is_subwin':src/code.google.com/p/goncurses/goncurses.c:71: undefined reference to `is_subwin'
/tmp/go-build527609801/code.google.com/p/goncurses/_obj/goncurses.o: 
In function 'ncurses_is_pad':src/code.google.com/p/goncurses/goncurses.c:63: undefined reference to `is_pad'

您可以使用 homebrew 在 os x 上安装 ncurses v5.9,并在 linux 上从源代码构建到/usr/local/,但是如何让 go 在构建时使用升级的 ncurses ?

最佳答案

@JimB 回答了我的另一个问题 How to change lib path for "go build"建议利用 pkg-config,该解决方案将如下所示:

在 CentOS 6 上,您可以像这样从源代码构建 ncurses,这会将驱动 pkg-config 的 .pc 文件放入您自己的目录,而不是/usr/lib64/pkgconfig/

mkdir ~/local-pkg-config
PKG_CONFIG_LIBDIR=~/local-pkg-config ./configure --prefix=/usr/local/ --enable-pc-files --with-pkg-config
make && make install

在 OS X 上,您可以从自制软件安装 ncurses。 Homebrew 通常将 .pc 文件与包一起放置,例如/usr/local/Cellar/pango/1.34.1/lib/pkgconfig/pango.pc。出于某种原因,自制软件没有任何带有 ncurses 的 .pc 文件,但我成功地将 CentOS 文件抓取到 ~/local-pkg-config 并更改它们以适应:

@@ -1,7 +1,7 @@
-prefix=/usr/local/
+prefix=/usr/local/Cellar/ncurses/5.9/
 exec_prefix=${prefix}
 libdir=${exec_prefix}/lib
-includedir=${prefix}/include/ncurses
+includedir=${prefix}/include
 major_version=5
 version=5.9.20110404

现在您已准备好在任一平台上获取 goncurses 包:

PKG_CONFIG_PATH=~/local-pkg-config/ go get -v code.google.com/p/goncurses

关于macos - 如何在 os x、centos 6 上构建 goncurses,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23975235/

相关文章:

macos - 无法在 OSX 上使用 docker 连接到 X 服务器

go - x509 Go 包 - ParsePKIXPublicKey 是 DER 还是 PEM?

go - 有什么方法可以使用 golang std 库来格式化日志(如下所述)?

CentOS cronjobs 位置

linux - 松鼠邮件数据副本

python - 如何检查 docker 实例是否正在运行?

ios - 无法在 Xcode 中分发适用于 iOS 的 Flutter 应用程序 - "ipa in the package contains an invalid character(s)"

objective-c - 正确裁剪 CIGaussianBlur

去建立错误 "db.GetUsers undefined (type *gorm.DB has no field or method GetUsers)"

java - Tomcat 在 CentO 上不起作用 - ExecStop=/bin/kill -15 $MAINPID (code=exited, status=1/FAILURE)