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/