wum*_*ump 6 c c++ linux binutils
让我们首先解释我对存根共享库的意思:一个可用于链接的共享库(具有真实库提供的某个接口),但不包含实际代码(因此没有功能).
除了头文件,它还提供了针对库开发所需的一切.
存根可以允许链接到某个库而无需提供代码,但是为了兼容性,它可以用于链接某个库的存根.例如, 在Linux中,存根用于标准库.为什么需要存根?
理想情况下,我需要一种从符号映射文件生成虚拟库的方法.反过来,此映射文件可以从现有的.so库或同一构建过程生成.
有免费的工具吗?或者我需要自己动手?
我想对于简单的 C 库,您可以使用nm -D真实共享库的输出来制作存根。例如,您可以将其传输到一个小awk脚本中,该脚本定义同名的函数等。
另一种方法是对最近的GCC编译器进行微小的MELT扩展,该编译器将在编译真实库时生成存根(例如,以 C++ 或 C 形式),或者清除每个函数体(以用于编译存根的特殊模式) -仅限图书馆)。这适用于 GCC 编译的任何语言(但需要对 GCC 内部结构有一定的了解,例如 Trees 和 Gimples)。请通过gcc-melt@googlegroups.com询问
但是,我不确定是否理解此类存根的实际利益。实际上,共享库有一些特定的编码规则和用法,并且在使用存根时无法验证这一点。具体来说,如果使用Xlib,则需要XOpenDisplay首先调用和XCloseDisplay最后调用,并且无法使用自动生成的存根等来检查此类规则...
| 归档时间: |
|
| 查看次数: |
3173 次 |
| 最近记录: |