我在 Go 中开发了一个需要最新版本的 sqlite 的实用程序。我只对针对特定架构感兴趣,具体来说:x64 linux。我正在 Mac OS X 上开发该实用程序。我正在使用go-sqlite3 driver。我使用 GNU Make + Glide 来构建我的实用程序。为了在我的 Mac 上交叉编译,我传递了特定的拱标志来制作。
我所针对的 Linux 平台上的存储库通常具有相当旧的 sqlite 版本,这些版本没有我在实用程序中需要的功能。
我可以在我需要的所有平台上手动编译和安装所需版本的 sqlite,但这很麻烦。我想知道是否有一种好方法可以静态链接特定版本的 sqlite 或以某种方式将实用程序与特定版本的 sqlite 动态库捆绑在一起。
尽管我经常提到 sqlite,但这个问题可以推广到其他库:如何将 golang 应用程序与特定版本的 C 库捆绑在一起,该库的过时版本可能安装在目标平台上。
另外:如何更好地组织该实用程序的开发,以便其他开发人员无需手动编译和安装特定版本的库 - 首选是使用 Makefile 为所需的目标平台构建所有二进制文件。我看到我可以将特定版本的库(例如 sqlite)的代码复制到我的实用程序的仓库中,但我想知道是否有更好的选择 - 也许我可以以某种方式为此目的使用 glide 依赖项并构建我需要的库作为其中的一部分我的其他依赖项。