![]() |
1
1
这个问题有点模棱两可,取决于什么 确切地 你的意思是“加载到内存中”。
让我们考虑执行一个完全静态链接的
这样的二进制文件有一个或多个
从某种意义上说,二进制的整个代码(包括所有库代码)都加载到内存中(例如,该代码出现在
然而,与
demand paging
,
没有一个
的实际占用了任何物理RAM。当您访问第一条指令(位于
同样,当您调用某个库函数时,(可能)会出现另一个页面错误,操作系统会加载被调用库函数的代码。
(此外:可以通过调用来修改上述行为
mlock
或
对你的问题的另一种可能的解释是“有可能吗
在这种解释中,库代码在被调用之前不会出现在进程的地址空间中。
这是很可能做到的:您只需要替换的实际代码
执行第二个(更复杂的)舞蹈(我能想到)的唯一原因是,如果您的操作系统缺乏需求分页(这可能意味着它不支持分页 完全 ). 可能有一些嵌入式操作系统可以做到这一点。 |
![]() |
AnkurVj · 是否可以使用LD_PRELOAD覆盖主方法? 10 年前 |
![]() |
serhatg · g++同时链接静态和非静态库 10 年前 |
|
Syf Illis · 针对共享库创建链接静态库 10 年前 |