2015-04-27 43 views
0

如果有一种相对简单的方法可以让+ libxml2 + gokogiri在Windows上工作?Go lang:如何在windows上安装libxml2/gokogiri

我的意思是我可能会安装它(但目前我不能,与Package libxml-2.0 was not found in the pkg-config search path卡住),但然后我需要提供我的实用程序给其他人,谁将永远不能(或希望)安装拉尔libxml2的依赖关系,修改Windows路径等等

它工作在Ubuntu完美无瑕......

我发现这个https://github.com/moovweb/gokogiri/issues/49这就是有趣的与安装瘸子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. 
+1

您已验证路径+'/libxml/tree.h | xpath.h'的子部分存在吗?错误只是说这些文件不存在,所以如果它们存在,那么问题几乎肯定是你的路径。至于为其他人提供你的工具,你可能会想要一个批处理脚本。 – evanmcdonnal

+0

是的,我很害怕那批脚本,太多的努力...可能是我只是用html标准库重写...甚至是正则表达式...我会再次检查PATH明天... – MikeKlemin

回答

2

由于很难将由不同人员构建的软件包用于不同目的并使您的环境正确设置,因此很困难。我认为最好使用MSYS2这个适用于Windows的环境,它为gcc,go,libxml2和iconv等内容提供了一组一致的包。 MSYS2有一个软件包管理器(pacman),可帮助您轻松安装并更新它们。

我并没有用Go做很多编程,但我熟悉MSYS2,看起来我能够使用MSYS2安装gokogiri。你应该从开始菜单(mingw64_shell.bat)打开MSYS2的“MinGW的-W64 Win64的壳”,并尝试运行以下命令:

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软件包。

字符串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,在上述说明i686更换x86_64

如果你很好奇,建立这些包的脚本在这里:https://github.com/Alexpux/MINGW-packages

作为一个声明,我并没有实际编译的任何程序去在MSYS2,所以有可能是我不知道的大问题。

而且,MSYS2(alexpux)的主要开发者之一在2015年6月21日说,这在#msys2 IRC聊天:

我们不能建立走了很长一段时间。 这个包非常WIP状态 另见 https://github.com/Alexpux/MINGW-packages/issues/421

所以,你可能需要修复与MSYS2转到包的一些问题,并重新编译它自己真正使这项工作。但是你有用于构建它的PKGBUILD脚本,所以也许这比你现在要做的要难,这涉及编译/收集每个gokogiri的依赖。

MSYS2会让你的其他安装go,libxml2和iconv过时。您可以删除这些东西,一旦你得到你的MSYS2环境工作。

+0

嘿,非常感谢!当我@ windows时,我一定会使用MINGW! 至于这个问题,我已经决定我不打算使用libxml,因为libxml或者Go有一些问题,当你用libxmling处理文档时,会导致巨大的内存消耗,不管你如何关闭,延迟甚至迫使垃圾收集......任何东西...... – MikeKlemin

0

如果您正在使用Visual Studio并希望为项目添加依赖项,那么只需使用NuGet Package Manager进行安装即可,这是最简单的方法。 安装命令:Install-Package libxml2