我不熟悉如何使用 C++ 存根函数。
我浏览了链接如何在 Linux 上创建存根共享库,但是
1) 我无法在 C++ 中获得确切完整的示例代码,其中存根是用 C++ 代码编写的。如果有人可以指出我的确切示例?
2)我还在研究如何在 Linux 上用完全相同的名称共享库函数替换存根?
如果有人可以帮助我解决我的两个问题,那将会很有帮助。
我不熟悉如何使用 C++ 存根函数。
我浏览了链接如何在 Linux 上创建存根共享库,但是
1) 我无法在 C++ 中获得确切完整的示例代码,其中存根是用 C++ 代码编写的。如果有人可以指出我的确切示例?
2)我还在研究如何在 Linux 上用完全相同的名称共享库函数替换存根?
如果有人可以帮助我解决我的两个问题,那将会很有帮助。
直接回答您的问题:
1) 存根不是用 C++ 编写的。每当您将程序链接到共享库时,链接器都会自动创建存根。它们与任何特定语言无关;链接器仅根据符号名称直接从每个符号将它们创建为二进制/asm 存根。
2) 动态链接器替换/重写存根以调用在运行时找到的实际动态库代码。
您的问题的答案来自对动态链接的黑魔法的理解。阅读 Ulrich Drepper 的How to Write Shared Libraies以全面了解该主题。