2015-04-27 72 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