我目前正在尝试将我所有应用程序的依赖项编译为静态库。我的动机如下:
- 不依赖于任何操作系统提供的库,以获得完全可重现的代码库
- 避免由动态链接引起的在其他系统上部署时的问题
- 避免在链接不同版本的库时发生运行时冲突
- 能够交叉编译到其他操作系统
- 是否可能构建完全静态构建的应用程序(例如libc、ligcc等)?
- 是否可能将所有库静态链接,但将主要组件(libgcc等)动态链接?
- 如果不行,是否可能链接静态构建的库(例如OpenCV),但通过动态链接(zlib、libc等)满足其依赖关系?
- 我在互联网上进行了研究,但找不到涵盖链接内部的全面指南(静态链接 vs. 动态链接)。您知道好书/教程吗?gcc的书籍能否让我更进一步?
- 这是一个非常愚蠢的想法吗?