短问题。如果我已经写了一个C++的静态库,并在Ubuntu上使用G++编译它,那么我可以安全地假设它将能够在其他Linux发行版上使用G++进行链接吗?
短问题。如果我已经写了一个C++的静态库,并在Ubuntu上使用G++编译它,那么我可以安全地假设它将能够在其他Linux发行版上使用G++进行链接吗?
Linux系统中的二进制文件,无论是可执行文件、静态库还是共享库,都不是任意可互换的。
这就是为什么几乎所有软件包都以源代码的形式分发,而你的软件包管理系统则负责如何配置和编译这些源代码。
尽管如此,商业软件应该在不透露实际源代码的情况下分发,通常由供应商为各种Linux发行版进行(跨)编译。
gcc
和 C++ 共享库来安全地链接它,并且在相同的 CPU 家族上。虽然gcc
和libstdc++
有一些向后兼容的 ABI 保证,但我不会依赖它,并且只会假设它与相同版本的 gcc 兼容。 - Sam Varshavchik