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