【发布时间】:2012-09-19 16:53:28
【问题描述】:
我最近花了相当多的时间来追踪一个问题,这个问题原来是由使用 -D_GLIBCXX_DEBUG 编译库引起的(它告诉 libstdc++ 使用带有额外检查的标准库的调试版本)但是编译没有客户端程序。这导致了 ABI 兼容性问题。
有什么方法可以自动检测 GCC 的此类问题吗? Visual Studio 提供了detect_mismatch pragma,我认为它可以达到这个目的,但我不知道有任何 GCC 等价物。 GCC 做了一些嵌入符号名称(例如GLIBCXX_3.4.9)的事情,我可以想象如果相应的符号(例如mylib_debug_stl)不存在,由于未定义符号而导致链接错误的方案,但我唯一的方法能想出使用那个符号真的很hacky。
另外,其他人如何避免这个问题?将库的检查版本构建为不同的名称或类似名称?
【问题讨论】:
标签: debugging gcc g++ glibc abi