我打算用 gcc 4.7.1 编译一个静态库(mylib.a)。我想利用C++11的优势,所以使用-std=c++11。我编译这个库的平台是带有 glibc-2.8 的 x86_64 SLES 11。
然后我想将遗留平台上的这个静态库与遗留代码链接,因此我必须使用 gcc 4.1.2 来链接和编译遗留代码。所以在我的库头文件中,我不会使用任何 C++11 特定代码。我还将从 gcc.4.7.1 链接 libstdc++.a。我想链接 mylib.a、libstdc++.a(gcc4.7.1) 和旧目标文件的平台是 x86_64 SLES 10 和 glibc-2.4。
我用 mylib.a 中的一些虚拟 C++11 代码 (std::async()) 尝试了所有这些混乱,并且成功了。我认为这可能只是因为 ELF 的要求。我的想法是否正确,或者ELF与它无关?如果 mylib.a 包含一些真正复杂的逻辑,我应该期待什么样的错误?