gpt4 book ai didi

c++ - 如何使 C++(共享)库与 clang 和 GCC 兼容?

转载 作者:可可西里 更新时间:2023-11-01 15:19:44 31 4
gpt4 key购买 nike

我已经编写了相当丰富的 C++11 库,并且我计划允许从我的网站下载预编译版本。

所以我设置了一个自动构建,它使用 clang 编译库并使其可供下载,但这暴露了一个问题:如果我尝试将 clang 编译的库与 GCC 一起使用,我会得到 undefined reference (主要是与 std::string 相关)。我认为这与 GCC 5.1 中的 GCC 双 ABI 更改有关,但我不确定如何修复它。

我的问题是,为了使 C++ 库与 clang 和 GCC 兼容,我应该设置什么标志,或者我应该遵循什么做法?

或者我应该放弃并编译两个单独的库吗?

最佳答案

正如在几个地方(例如 here)提到的,libc++ 与 libstdc++ 不是完全二进制兼容的。有多种选择,但其中一些并不是那么简单。

  1. 编译两个独立的库 - 始终有效的解决方案。
  2. 从您的界面中删除不兼容的容器(例如 std::string)- 但这可能需要大量工作,有时不是一个好主意。
  3. 告诉您的库 GCC 用户您与 libc++ 链接并且他们需要执行相同的基本步骤 here .但我想大多数 GCC 用户不想这样做。
  4. 使用 clang 和 libstdc++ 使用 -stdlib=libstdc++ 标志与 libstdc++ 兼容(如其他答案中所建议)。不过,此解决方案在某些平台上可能更难设置。

如评论中所述,我建议选择选项 1。

关于c++ - 如何使 C++(共享)库与 clang 和 GCC 兼容?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48072848/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com