Windows 下 gcc + golang 編譯 git2go

最近研究用go語言操做git,除了直接走命令行用os/exec包,還能夠使用libgit2的go綁定git2go操做。 可是libgit2是c語言庫,go使用cgo鏈接c程序,須要cgo的支持。總之過程複雜,摔了一路。<!--more-->html

安裝 gcc 和 pkg-config

首先是安裝gccpkg-config(cgo依賴)。gcc編譯器推薦用TDM-GCC來直接安裝,方便快捷,注意不要用綠色版用安裝版。pkg-config能夠再gnome的官方庫中找到。pkg-config安裝須要同時下載:python

http://ftp.gnome.org/pub/gnome/binaries/win32/dependencies/pkg-config_0.26-1_win32.zip
http://ftp.gnome.org/pub/gnome/binaries/win32/dependencies/gettext-runtime_0.18.1.1-2_win32.zip
http://ftp.gnome.org/pub/gnome/binaries/win32/glib/2.28/glib_2.28.8-1_win32.zip

把幾個zip包中bin目錄的全部exe和dll拷貝到gcc的bin目錄。git

gcc 編譯 libgit2

libgit2 是Git核心開發包的純c實現,能夠很容易移植和嵌入到別的應用中。官網也提供的它和各類語言的綁定,好比Go語言的git2gogithub

在Mac上golang編譯git2go很容易:golang

brew install libgit2
go get github.com/libgit2/git2go

不過由於git2go和對應的libgit2進度不一樣,Windows編譯的時候問題不斷。windows

直接git clone最新的libgit2代碼(錯誤的),使用cmake編譯。具體方法在官方wiki Building libgit2 on Windows 已經寫清楚,照着來就行。惟一注意,把編譯參數中的 BUILD_CLAR 關閉,就能夠不依賴python。還有,使用文檔最後的參數:app

cmake . -DCMAKE_INSTALL_PREFIX=C:\libgit2

編譯到目錄名沒有空格的目錄,不然git2go的wrapper.c會解析地址錯誤。建議用cmake-gui查看並設置編譯參數。按照wiki編譯:ui

cmake --build .. --target install

編譯完成,將C:/libgit2/lib/pkgconfig添加到系統變量PKG_CONFIG_PATH,讓pkg-config能夠找到libgit2.pc文件。.net

以後就能夠 go get啦。命令行

可是

後來在Github項目的Pull#53發現,最新的libgit2更新了API破壞了git2go。最終求助mac的同窗,查到brew提供的編譯好的是0.20版本,就去下載 release 0.20.0

golang 編譯 git2go

git2go的編譯惟一須要注意就是,將C:/libgit2/lib/pkgconfig添加到系統變量PKG_CONFIG_PATH,讓cgo能夠訪問到.pc文件,讀取庫相關信息。剩下就是 go get 或者 go install。


個站地址:http://fuxiaohei.me/article/14/windows-git2go.html

相關文章
相關標籤/搜索