git2go与libssl和libssh2在单个二进制文件中

时间:2015-12-18 10:16:49

标签: go libgit2

有没有人可以提供一些关于如何打包使用git2go,libssl和libssh2的GO程序的建议(或资源),以便它不需要最终用户单独安装这些库?

我只针对Linux发行版(如果重要)

1 个答案:

答案 0 :(得分:1)

一种方法是静态构建这些依赖项,并使用PKG_CONFIG_PATH指向您自己的副本,以便所有内容静态链接。这应该让CMake选择静态版本。

但如果目标是避免依赖于用户安装的库而不是将所有内容都设置为单个可执行文件,我建议运送库并使用加载路径来确保它们被加载。使用gcc,您可以通过-Wl,-R在二进制文件中设置搜索路径,这样您就可以设置搜索您随应用一起提供的共享库的位置。使用go,您可以将-r传递给链接器(通过-ldflags或手动)以执行相同的操作。

libgit2是可扩展的,因此第三个选项是在Go中实现TLS流和SSH传输,并将这些选项插入libgit2版本而不支持这些。然而,这是一项重要的工作。