Go lang:如何在 windows 上安装 libxml2/gokogiri

Go lang: how to install libxml2/gokogiri on windows

如果有相对简单的方法让 go + libxml2 + gokogiri 在 windows 上工作?

我的意思是我可能可以安装它(但目前我不能,坚持使用 Package libxml-2.0 was not found in the pkg-config search path),但是我需要向其他人提供我的实用程序,他们永远无法(或者希望 ) 安装 lall libxml2 依赖项,修改 PATH 等 windows...

它在 Ubuntu...

上完美运行

我发现这个 https://github.com/moovweb/gokogiri/issues/49 安装 Gimp 2 很有趣(什么?!),但我仍然无法做到 运行 这样的错误,我想可能是 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.

如果您正在使用 visual studio 并且想要向您的项目添加依赖项,那么只需使用 NuGet 包管理器安装它,这是最简单的方法。 安装命令:Install-Package libxml2

您正在苦苦挣扎,因为很难组合由不同人为不同目的构建的包并正确设置您的环境。我认为最好使用 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 get github.com/moovweb/gokogiri

我觉得GOPATH应该设置成你项目的目录。如果您 运行 遇到错误,可能是因为需要一些我没有在此处列出的 pacman 软件包。

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

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 聊天中说:

We not build go for a long time. This package in very WIP state Also see https://github.com/Alexpux/MINGW-packages/issues/421

因此您可能需要修复 MSYS2 Go 包的一些问题并自行重新编译才能真正使它工作。但是你有用于构建它的 PKGBUILD 脚本,所以这可能比你现在尝试做的事情更难,后者涉及 compiling/collecting gokogiri 的每个依赖项。

MSYS2 会使您安装的其他 go、libxml2 和 iconv 过时。一旦您的 MSYS2 环境正常运行,您就可以删除这些内容。