首页 > 后端开发 > C++ > 正文

为什么 c 0x 模式下的 libc 的 clang 无法链接这个 boost::program_options 示例?

Patricia Arquette
发布: 2024-11-03 13:43:30
原创
303 人浏览过

Why does clang with libc   in c  0x mode fail to link this boost::program_options example?

为什么 c 0x 模式下的 clang 与 libc 不链接这个 boost::program_options 示例?

使用 libc 和 clang 编译涉及 boost::program_options 的示例程序c 0x 模式会导致未定义的符号错误。但是,相同的代码可以使用 g -mp-4.7 或 clang 在没有 libc 的情况下成功编译和链接。

问题

问题是由于 boost::program_options 的不兼容性引起的,它是使用构建的libstdc 和 libc 。为了避免意外混合不兼容的标准库并确保二进制兼容性,libc 采用了称为“内联命名空间”的 C 11 功能。这会更改 std::string 的应用程序二进制接口 (ABI),而不影响其应用程序编程接口 (API)。

解决方案

要解决此兼容性问题,请使用 clang 和以下命令重建 boost -stdlib=libc 标志:

clang++ -stdlib=libc++
登录后复制

此操作将使用 libc 重建 boost,并避免因使用不兼容的标准库而产生的符号冲突。

以上是为什么 c 0x 模式下的 libc 的 clang 无法链接这个 boost::program_options 示例?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板