我有一个用 libc++(支持 C++11 的 LLVM C++ 标准库)编译的软件。我的软件在新操作系统(os x 10.9 及更高版本)上运行良好。问题是我的软件在旧操作系统(os x 10.8 及以下)上崩溃。我认为这是因为 OS X 10.8 及更早版本上的默认 C++ 运行时是基于 GCC 4.2.1 的 libstdc++ 版本,它不支持 C++11。 我能做什么?
最佳答案
您可能会尝试静态链接您的软件(也许只静态链接 C++ 标准库,动态链接 libc
)。
否则,就像在大多数 POSIX 系统上一样,您可以尝试在新操作系统的 chroot
环境中安装旧操作系统。
您也可以尝试为旧操作系统编译新的标准 C++ 库(可能使用交叉编译技巧)。
顺便说一句,您应该使用所有警告和调试信息编译您的代码(因此 clang++ -Wall -g
和/或 g++ -Wall -Wextra -g
)。改进你的代码,直到你没有收到警告。使用最近的编译器(例如GCC版本5,Clang/LLVM至少3.7版),调试器(gdb
),valgrind , Address Sanitizer等。非常 scared的 undefined behavior (听起来你的代码可能有一些 UB)。
(您可以从它们的源代码编译最近的编译器和其他免费软件工具)
关于c++ - 如何在旧 OS X 上运行使用新 C++ 标准库编译的软件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35429186/