是否有一种相对简单的方法可以使go + libxml2 + gokogiri在Windows上工作?

我的意思是说我可能可以安装它(但目前无法,我仍然受Package libxml-2.0 was not found in the pkg-config search path的困扰),但随后我需要向其他人提供我的实用程序,他们将永远(或希望)无法安装lalib libxml2依赖项,在Windows上修改PATH等...

它可以在Ubuntu上完美运行...

我发现这个https://github.com/moovweb/gokogiri/issues/49对安装Gimp 2很有趣(什么?!),但是我仍然无法使它运行时出现这样的错误,我想PATH可能有问题,但是所有PATH都已设置

$ go get github.com/moovweb/gokogiri
# github.com/moovweb/gokogiri/help
Documents\go\src\github.com\moovweb\gokogiri\help\help.go:6:25: fatal error: lib
xml/tree.h: No such file or directory
 #include <libxml/tree.h>
                         ^
compilation terminated.
# github.com/moovweb/gokogiri/xpath
Documents\go\src\github.com\moovweb\gokogiri\xpath\expression.go:4:26: fatal err
or: libxml/xpath.h: No such file or directory
 #include <libxml/xpath.h>
                          ^
compilation terminated.

最佳答案

您正在苦苦挣扎,因为很难组合不同人为不同目的而构建的软件包并正确设置环境。我认为最好使用MSYS2,它是Windows的环境,可为gcc,go,libxml2和iconv等提供一致的软件包。 MSYS2具有一个程序包管理器(pacman),可帮助您轻松安装它们并保持更新。

我对Go的编程工作不多,但是我对MSYS2很熟悉,似乎可以使用MSYS2安装gokogiri。您应该从“开始”菜单(mingw64_shell.bat)打开MSYS2的“MinGW-w64 Win64 Shell”,然后尝试运行以下命令:

pacman -S mingw-w64-x86_64-{gcc,go,libxml2,iconv}
export GOROOT=/mingw64/
export GOPATH=/c/Users/David/Documents/goproj/
mkdir -p $GOPATH
go git github.com/moovweb/gokogiri

我认为GOPATH应该设置为您项目的目录。如果遇到错误,可能是因为需要一些pacman软件包而我没有在这里列出。

Bash将字符串mingw-w64-x86_64-{gcc,go,libxml2,iconv}扩展为以下软件包列表:
mingw-w64-x86_64-gcc
mingw-w64-x86_64-go
mingw-w64-x86_64-libxml2
mingw-w64-x86_64-iconv

如果您实际使用的是32位Windows,请按照上述说明将x86_64替换为i686

如果您好奇,可以在此处构建这些软件包的脚本:https://github.com/Alexpux/MINGW-packages

作为免责声明,我实际上尚未在MSYS2中编译任何go程序,因此可能存在我不知道的大问题。

此外,MSYS2(alexpux)的主要开发人员之一在2015-06-21的#msys2 IRC聊天中表示了这一点:

我们没有建立go很长时间了。
此套件处于非常在线状态
另见
https://github.com/Alexpux/MINGW-packages/issues/421

因此,您可能需要修复MSYS2 Go软件包中的某些问题,然后自己重​​新编译才能真正完成此工作。但是您拥有用于构建它的PKGBUILD脚本,因此,这可能比您现在尝试的要难一些,后者涉及编译/收集gokogiri的每个依赖项。

MSYS2将使您的go,libxml2和iconv的其他安装过时。一旦使MSYS2环境工作,就可以删除这些内容。

关于windows - Go Lang:如何在Windows上安装libxml2/gokogiri,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29901728/

10-10 15:16