Windows 下 gcc + golang 编译 git2go

傅小黑 · · 2032 次点击 · · 开始浏览    
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

最近研究用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.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目录。

gcc 编译 libgit2

libgit2 是Git核心开发包的纯c实现,可以很容易移植和嵌入到别的应用中。官网也提供的它和各种语言的绑定,比如Go语言的git2go

在Mac上golang编译git2go很容易:

brew install libgit2
go 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

本文来自:开源中国博客

感谢作者:傅小黑

查看原文:Windows 下 gcc + golang 编译 git2go

2032 次点击  
加入收藏 微博
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传