Windows 下 gcc + golang 編譯 git2go

來源:互聯網
上載者:User
這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。

最近研究用go語言操作git,除了直接走命令列用os/exec包,還可以使用libgit2的go綁定git2go操作。
但是libgit2是c語言庫,go使用cgo串連c程式,需要cgo的支援。總之過程複雜,摔了一路。

安裝 gcc 和 pkg-config

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

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

把幾個zip包中bin目錄的所有exe和dll拷貝到gcc的bin目錄。

gcc 編譯 libgit2

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

在Mac上golang編譯git2go很容易:

brew install libgit2go get github.com/libgit2/git2go

不過因為git2go和對應的libgit2進度不同,Windows編譯的時候問題不斷。

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

cmake . -DCMAKE_INSTALL_PREFIX=C:\libgit2

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

cmake --build .. --target install

編譯完成,將C:/libgit2/lib/pkgconfig添加到系統變數PKG_CONFIG_PATH,讓pkg-config可以找到libgit2.pc檔案。

之後就可以 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

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.