一尘不染

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

go

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

我只针对Linux发行版(如果有关系)


阅读 298

收藏
2020-07-02

共1个答案

一尘不染

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

但是,如果目标是避免依赖用户安装的库而不是使所有内容都成为单个可执行文件,则建议您提供这些库并使用加载路径来确保它们已被加载。随着gcc你通过-Wl,-R设置在二进制文件本身的搜索路径,这样你就可以设置到哪里寻找你与你的应用程序出货共享库。有了go它,您似乎可以-r(通过-ldflags或手动)传递给链接器以执行相同的操作。

libgit2相当可扩展,因此还有第三种选择,那就是在Go中实现TLS流和SSH传输,并将它们插入libgit2版本中而不支持它们。但是,这是大量的工作。

2020-07-02