【发布时间】:2010-12-30 12:09:39
【问题描述】:
破坏具有 C++ 接口的 DSO/共享库的二进制向后兼容性并不难。也就是说,是否有一个静态分析工具可以帮助检测这种 ABI 中断,如果它有两组不同的头文件:DSO 的早期状态和当前状态的那些(也许还有 DSO)?欢迎提供免费和商业产品建议。
如果它还可以警告不良做法,例如DSO接口中的内联函数和默认函数参数,那就太好了。
【问题讨论】:
-
是什么让你认为内联函数和默认参数是不好的做法?
-
另外,我不确定您是否理解 ABI 的含义 - 我看不出它与头文件有什么关系。理想情况下,如果您确实遇到 ABI 不兼容问题,链接器会发现它。
-
也许不是很清楚我正在构建一个 DSO。如果库接口有内联函数,则将其编译到 DSO 的客户端中。因此更改内联函数不会影响应用程序的功能。默认函数参数也是如此。
-
DSO?也许这就是为什么你在做什么不清楚。平台?
-
动态共享对象 (DSO) 又名共享库。这些平台是 Linux 和商业平台。
标签: c++ shared-libraries static-analysis backwards-compatibility