一尘不染

如何在OS X,CentOS 6上构建goncurses

go

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?


阅读 211

收藏
2020-07-02

共1个答案

一尘不染

@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并将其更改为适合的格式:

@@ -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
2020-07-02