gpt4 book ai didi

c++ - 如何在 Linux 上创建 stub 共享库

转载 作者:IT王子 更新时间:2023-10-29 00:56:26 28 4
gpt4 key购买 nike

让我们首先解释一下 stub 共享库的意思:一个可以用来链接的共享库(带有真实库提供的特定接口(interface))但不包含实际代码(因此没有功能).

连同头文件,它提供了针对库进行开发所需的一切。

stub 可以允许在没有可用代码的情况下链接到某个库,而且为了兼容性,链接到某个库的 stub 也很有用。参见示例 In Linux stubs are used for standard libraries. Why are stubs required?

理想情况下,我需要一种从符号映射文件生成虚拟库的方法。该映射文件又是从现有的 .so 库或在同一构建过程中生成的。

有免费的工具吗?还是我需要自己动手?

最佳答案

我想对于简单的 C 库,您可以在真正的共享库上使用 nm -D 的输出来制作 stub 。例如,您可以将其通过管道传输到一个小的 awk 脚本中,该脚本定义了同名函数等。

另一种方法是让你的小 MELT扩展到最近的 GCC编译器会在编译真实库时生成 stub (例如以 C++ 或 C 形式),或者会清除每个函数体(在编译仅 stub 库的特殊模式下)。这适用于 GCC 编译的任何语言(但需要对 GCC 内部有一些了解,例如 Trees 和 Gimples)。询问gcc-melt@googlegroups.com

但是,我不确定是否理解此类 stub 的实际意义。在实践中,共享库有一些特定的编码规则和用法,使用 stub 时不会验证这一点。具体来说,如果使用Xlib,需要先调用XOpenDisplay,最后调用XCloseDisplay,而自动生成的 stub 等无法检查该规则。 ..

关于c++ - 如何在 Linux 上创建 stub 共享库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25643560/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com