Tag: 动态加载

动态加载和后期绑定有什么相同点和不同点?

来自维基百科: 动态加载是一种机制,通过该机制,计算机程序可以在运行时将库(或其他二进制文件)加载到内存中,检索库中包含的函数和变量的地址,执行这些函数或访问这些变量,然后卸载来自记忆库。 后期绑定是一种计算机编程机制,其中在运行时通过名称查找对象调用的方法。 在我看来, 相似之处在于它们都是在运行时查找方法的机制。 不同之处在于动态加载在运行时加载库后不需要使用链接器,但后期绑定始终需要链接器。 我不确定我是否正确,尤其是差异部分。 我想从您的分析中了解更多信息。

`-rdynamic’究竟做了什么以及何时需要它?

-rdynamic (或–export-dynamic器级别的–export-dynamic )究竟做了什么以及它如何与-fvisibility* flags或visibility pragma s和__attribute__ s定义的符号可见性相关? 对于–export-dynamic , ld(1)提到: …如果使用“dlopen”加载需要引用程序定义的符号的动态对象,而不是某些其他动态对象,则在链接程序本身时可能需要使用此选项。 … 我不确定我完全明白这一点。 你能否提供一个例子,如果没有-rdynamic ,它会不起作用,但是呢? 编辑 :我实际上尝试编译了几个虚拟库(单个文件,多个文件,各种-O级别,一些函数间调用,一些隐藏符号,一些可见),有和没有-rdynamic ,到目前为止我已经得到字节相同的输出(当然保持所有其他标志不变),这是非常令人费解的。