繁体   English   中英

程序链接到libstdc ++和libc ++意味着什么?

[英]What does it mean for a program to link to both libstdc++ and libc++?

最近,我在其动态部分( readelf -d )中看到了libstdc ++和libc ++的C ++程序列表。

我很困惑,因为一个来自GNU,另一个来自LLVM,它们都是STL的实现。 那么一个程序如何链接呢? 那是什么意思?

它如何解析链接时提供的符号(例如std::string )?

例如,如果程序与一个标准库实现链接,并且还与链接到另一个的静态库链接,则可能发生这种情况。 这不会引起问题,因为诸如std::string类的名称被破坏成更长且更复杂的东西而不会发生冲突。 (这也是如何使用不同的参数类型重载和调用具有相同名称的函数,以及为什么为标准库的旧版本编写的程序在升级时不会中断。)

一个重要的警告:只有当STL不是链接到不同版本的任何组件的接口的一部分时,这才有效。 否则,任何客户端代码都将针对标准库的不同版本进行编译,而不是在调用该组件时链接到该标准库,或甚至将错误的数据结构传入和传出库。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM