c++ - gcc vs clang 公共(public)库问题

标签 c++ gcc clang++

我有两个应用程序,一个是用 gcc(c++) 编译的,另一个是用 clang++ 编译的。我将为这两个应用程序使用共同的共享提升库。我的问题是是否使用 clang 编译器或 gcc 编译器编译 boost 共享库。我可以在使用 clang 编译的应用程序中使用使用 gcc 编译的 boost 库吗?

最佳答案

g++ 和 clang++ 作为编译器兼容(因为它们都遵循 Itanium ABI),但它们可能带有不兼容的标准库实现。

g++ 带有一个称为 libstdc++ 的标准库实现。您可以指示 g++ 使用不同的实现,但这并非微不足道。

clang++ 有时没有自己的标准库实现(并配置为使用 g++ 提供的实现),有时带有称为 libc++ 的实现。可以通过单个命令行选项轻松地将 clang++ 切换为使用 libc++ 或 libstdc++。

所以您的问题归结为您的应用程序使用什么标准库实现。如果他们使用相同的实现,则需要使用该实现(以及任一编译器)构建 Boost。如果他们使用不同的实现,您需要两个单独的 Boost 构建。

有时可以在同一个应用程序中混合针对不同标准库实现构建的组件,但这并不简单,需要很多限制,并且像 boost 这样的东西要么不可行,要么完全不可能.

关于c++ - gcc vs clang 公共(public)库问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49715462/

相关文章:

c++ - 在C++中判断一个int是否被赋值有什么优雅的方法吗?

c++ - 如何修复具有不同签名的重载函数

c++ - 类(class)成员重新排序

c++ - 错误 'a.out' : free(): invalid next size (normal)

c - X86 汇编问题

c++ - GCC 中的不同模板错误格式?

c++ - 如何修复 "array rvalue"无法使用 gcc-4.8 和 clang-3.7 进行编译的问题?

c++ - 如何使用 C++ 以跨平台方式找到用户的主目录?

c++ - 即使库排序正确,命令行也缺少 DSO

MPI 中的 C++ double 类型