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'
您可以使用自制软件在os x上安装ncurses v5.9,并从源代码构建到Linux上的/ usr / local /中,但是go在构建时如何使用升级的ncurses?
go
@JimB回答了我的另一个问题,即如何利用pkg-config的建议更改“ gobuild”的lib路径,该解决方案如下所示:
在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。自制软件通常会将.pc文件与软件包放置在一起,例如/usr/local/Cellar/pango/1.34.1/lib/pkgconfig/pango.pc。由于某种原因,自制软件的ncurses没有任何.pc文件,但是我成功地将CentOS的文件抓到〜/local-pkg-config并将其更改为适合的格式:
/usr/local/Cellar/pango/1.34.1/lib/pkgconfig/pango.pc
@@ -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