【发布时间】:2017-11-30 17:07:44
【问题描述】:
我想将静态 C 库 (.a) 作为二进制文件分发。
给定特定的 CPU 架构和平台(例如 armv6 / Raspi):
- 是否可以创建一个适用于所有不同 GCC 版本的单一二进制文件,即是否存在适用于不同 GCC 版本的 ABI?
- 是否也可以使用来自 Clang 的相同二进制文件?
如果不是,我需要为哪些 GCC 版本创建不同的二进制文件?是否可以使用非常旧的 GCC 来构建二进制文件并期望较新的 GCC 版本正确链接它?
如果需要多个二进制文件:是否有任何流行的软件作为静态库(.a 文件)分发,可以作为最佳实践的参考进行检查?
共享对象 (.so) 会比静态库 (.a) 更好吗?是否有 Linux 定义的 ABI 允许使用不同 GCC 版本编译的程序导入 .so 或 .a 库?
这个问题与 C++ 无关。有问题的库仅使用 C99 并且是纯可移植的,即甚至不依赖于标准库。
【问题讨论】:
标签: c gcc static-libraries portability abi