按需加载/卸载 ELF 部分?

2023-12-29

对于一个相当晦涩的用例,我想要一个(大型)静态链接的 Linux 可执行文件,由一小段控制代码和大段静态(只读)数据组成。为了节省内存,是否可以让加载器仅加载控制代码的部分,然后根据需要手动加载 RO 数据的部分,并在处理完成后再次卸载它们?

这可能吗?

(我想数据流(在文件系统级别)可以用来解决这个问题,但它们对我来说不可用(EXT3),而且分发会很棘手,因为数据流很容易丢失。)


这(很可能)已经为您处理好了。

真正的答案当然取决于系统,但一般来说,现代操作系统(当然还有 Linux)对可执行文件使用需求分页,因此实际上不会为您未引用的 ELF 文件部分分配 RAM。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

按需加载/卸载 ELF 部分? 的相关文章

  • 操作系统什么时候清除进程的内存

    进程在某些操作系统上成功或异常终止 操作系统何时决定擦除分配给该进程的内存 数据 代码等 在退出时或当它想为新进程分配内存时 这个清除内存分配过程在所有操作系统 winXP Win7 linux Mac 上都相同吗 据我了解 页表具有该进程
  • 如何用X11复制到剪贴板?

    使用 OS X 上的框架 我可以使用以下命令将 PNG 复制到粘贴板 在 C 中 显然我可以将 NSPasteboard 与 Cocoa 一起使用 include
  • 怎样才能使 Windows 成为一个开箱即用的 POSIX 兼容操作系统?

    这个问题的动机是我的一个牵强的梦想 即 nix 平台上可用的许多优秀软件可以轻松移植到 Windows 微软最近对开源和开放性采取了不同的方法 所以我真的很想知道如果微软有这样的倾向 这样的事情会有多可行 我很好奇的一些更具体的事情是 是否
  • gethostbyname() 或 getnameinfo() 如何在后台工作?

    How gethostbyname or getnameinfo 在后台工作 include
  • 在 LINUX 上使用 Python 连接到 OLAP 多维数据集

    我知道如何在 Windows 上使用 Python 连接到 MS OLAP 多维数据集 嗯 至少有一种方法 通常我使用 win32py 包并调用 COM 对象进行连接 import win32com client connection wi
  • 标准头文件中的 C 编译器错误 - 未定义的 C++ 定义

    我正在尝试编译 C 程序 但收到许多错误 这些错误是在标准 C 头文件 inttypes h stdio h stat h 等 中遇到的 错误的来源是以下未定义的常量 BEGIN DECLS END DECLS BEGIN NAMESPAC
  • 在 Ubuntu 16.04 上找不到 printf.c

    我最近切换到Ubuntu 16 04 我在用vscode作为 Ubuntu 上的 IDE 我配置了其他语言 但我无法做到这一点C C 我创建c cpp properties json launch json tasks json 当我开始编
  • 每个进程每个线程的时间量

    我有一个关于 Windows 和 Linux 中进程和线程的时间量子的问题 我知道操作系统通常为每个线程提供固定的时间量 我知道时间量根据前台或后台线程而变化 也可能根据进程的优先级而变化 每个进程有固定的时间量吗 例如 如果操作系统为每个
  • Bash 方法的返回值总是模 256

    我有一个 bash 脚本方法 它返回输入值 然而 返回值始终是模 256 的值 我用 google 搜索了一段时间 发现this http www tldp org LDP abs html exitcodes html文章说它总是以 25
  • 适用于 KDE 和 Gnome 的 Gui [重复]

    这个问题在这里已经有答案了 我想为一个现在是 CLI 的应用程序编写一个 gui 它需要在 KDE 和 Gnome DE 中 看起来不错 充分利用用户的外观设置 如果我选择 Qt 或 GTK 我能够做到这一点吗 它们与两个 DE 集成良好吗
  • 如何在特定 systemd 服务重新启动时触发自定义脚本运行

    我想知道如何安排自定义脚本在重新启动服务时运行 我的用例是 每当重新启动 Tomcat 服务时 我都必须运行多个命令 我想知道是否有一种方法可以编写脚本并安排它在重新启动 Tomcat 服务时运行 我已将 tomcat 脚本设置为 syst
  • 为什么 Linux 对目录使用 getdents() 而不是 read()?

    我浏览 K R C 时注意到 为了读取目录中的条目 他们使用了 while read dp gt fd char dirbuf sizeof dirbuf sizeof dirbuf code Where dirbuf是系统特定的目录结构
  • Linux 桌面快捷方式和安装图标

    我需要添加什么到我的 spec文件来创建桌面快捷方式并在安装过程中为快捷方式分配一个图标 rpm 如果需要脚本 一个示例将非常有帮助 您在 Linux 下使用 desktop 文件作为图标 图标放置的位置取决于您使用的发行版和桌面环境 由于
  • .NET Core 中的跨平台文件名处理

    如何处理文件名System IO以跨平台方式运行类以使其在 Windows 和 Linux 上运行 例如 我编写的代码在 Windows 上完美运行 但它不会在 Ubuntu Linux 上创建文件 var tempFilename Dat
  • 如何更改 Ubuntu 14.04 上的 php-cli 版本?

    我是 Linux 新手 在篡改时破坏了一些 php 设置 如果我执行一个包含以下内容的 php 脚本 phpinfo 它显示 php 版本为 5 6 但通过命令行 如果我运行php v它返回 7 0 版本 我想让两个版本匹配 我怎样才能修复
  • 如何模拟ARM处理器运行环境并加载Linux内核模块?

    我尝试加载我的vmlinux into gdb并使用 ARM 内核模拟器 但我不明白为什么我会得到Undefined target command sim 这是外壳输出 arm eabi gdb vmlinux GNU gdb GDB 7
  • 嵌入式Linux poll()不断返回

    我有一个特别的问题 当我知道没有什么可读时 民意调查不断返回 因此设置如下 我有 2 个文件描述符 它们构成fd设置民意调查监视 一种用于引脚从高到低的变化 GPIO 另一个用于代理输入 代理输入出现问题 处理的顺序是 启动main函数 然
  • Elasticsearch 无法写入日志文件

    我想激活 elasticsearch 的日志 当我运行 elasticsearch 二进制文件时 我意识到我在日志记录方面遇到问题 无法加载配置 这是输出 sudo usr share elasticsearch bin elasticse
  • 在 Linux 上更快地分叉大型进程?

    在现代 Linux 上达到与 Linux 相同效果的最快 最好的方法是什么 fork execve combo 从一个大的过程 我的问题是进程分叉大约 500MByte 大 并且一个简单的基准测试只能从进程中实现约 50 个分叉 秒 比较最
  • Android:ANT 构建失败,并显示 google-play-services-lib:“解析为没有项目的 project.properties 文件的路径”

    我正在尝试使用 ANT 构建我的应用程序 但在包含 google play services lib 库项目后 我惨遭失败 Step 1 我在 project properties 文件中设置了对库项目的引用 android library

随机推荐

  • emberjs嵌套动态路由段返回null并且无法更新子记录

    我正在尝试实施一个评论功能 显示属于单个帖子的评论列表 然后单击 编辑 并从属于单个帖子的所有评论中编辑任何选定的评论 Updated jsfiddle http jsfiddle net VrR2T 1 我可以创建属于所选帖子的评论 如上
  • 使用自动参数 munmap_chunk() 返回自动的函数:无效指针

    我正在测试新功能 https stackoverflow com questions 25879705 is auto as a parameter in a regular function a gcc 4 9 extension对于 G
  • 如何在 Visual Studio 中导出 exe 文件以及所有使用过的文件

    因此 我一直在使用 Visual Studio C 文件中的音频和图像进行一些项目 截至目前 它们只是测试项目 但我现在将转向使用 SFML 和一些不同的音频库制作 2D 游戏 问题是这样的 我想将我的游戏分发给其他人 以便他们可以玩和测试
  • Android I/zygote64:等待阻塞 GC ProfileSaver

    我在调试我的应用程序时遇到了这个问题 它在这条线上阻塞 我不知道是什么原因造成的 我找不到任何答案或遇到同样问题的人 我不知道代码的哪一部分可能会导致这种情况发生 您对此有什么想法或经验吗 我在用着Android Studio 3 1 JR
  • 是否有任何理由不返回不期望的可变对象?

    我有许多类似于以下的功能 NSArray arrayOfSomething NSMutableArray array NSMutableArray array Add objects to the array return array co
  • 强制 docker 构建“重建”一步

    我知道 docker 有一个 no cache true强制干净构建 docker 镜像的选项 然而 对我来说 我真正想做的就是强制最后一步在我的 dockerfile 中运行 这是一个CMD运行 shell 脚本的命令 无论出于何种原因
  • Sencha:无法满足“ext”的要求

    尝试刷新我的 sencha extjs 应用程序并总是收到此错误 命令 sencha 应用程序刷新煎茶应用程序升级 总是同样的错误 ERR Cannot satisfy requirements for ext ERR The follow
  • WPF 中的相机位置和视线方向

    我希望你们都做得很好 我目前正在开发 wpf 应用程序 我是 wpf 的新手 我正在创建一个代表 wpf 中的实验室的场景 我在设置相机方面遇到了很大的困难 我不知道相机的原点从哪里开始 即 0 0 0 或默认位置 我正在研究位置值 但无法
  • 从 matlab 到 python 的repmat转换[重复]

    这个问题在这里已经有答案了 我想将给定的 matlab 代码转换为 python img o repmat fill value osize 这里的 fill value 是一个1x1x3矩阵和osize 320 320 输出矩阵是320x
  • 如何在 Tridion 功能区中创建自定义按钮 [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 请任何人都可以帮助我理解 如何在 Tridion 功能区中创建自定义按钮 我需要稍后在单击该按钮时获得一个功能 有关开始创建 Trid
  • Cython 支持 C++11 容器吗?

    Cython 为我们提供了一种导入 C 标准库数据结构的简单方法 例如 from libcpp vector cimport vector from libcpp utility cimport pair 但是 C 11 引入的新容器又如何
  • Linq 查询返回父子的扁平化列表

    对 linq 的世界仍然陌生 我需要一些帮助将有孩子的父母列表扁平化为一个父子列表 像这样 class Program static void Main List
  • pip install 命令出错,退出状态为 1

    我有这个requirments txt file confluent kafka avro 1 1 0 当我运行命令时 pip3 install r requirments txt 这是我收到的错误 ERROR Command errore
  • canFetchMore() 和 fetchMore() 未按预期工作

    我在使用延迟加载实现 Qt 树模型时遇到问题canFetchMore and fetchMore 我有这个代码 from PySide QtCore import Qt QAbstractItemModel QModelIndex from
  • NSFetchedResultsController 提供表视图,同时同一持久存储的后台更新导致死锁

    仍在致力于将应用程序从每次使用或显示信息时下载信息 转变为使用 CoreData 将其缓存在手机上 由 MagicalRecord 提供 这是在 iOS 7 上 因为我们没有设置数据推送系统来在后端的某些数据发生变化时自动更新手机的缓存数据
  • 我应该在 Gradle 依赖项中添加什么?

    我的项目中有多项活动 但我在 Gradle 中没有任何依赖项 我有这些进口 我在这些导入中遇到错误 例如 Appcompat appcompatActivity 等等 import androidx appcompat app AppCom
  • 从挂起的 Intent 启动的 Intent getExtra

    我试图在用户从列表中选择带有时间的内容后发出一些警报 并在给定时间为其创建通知 我的问题是广播接收器无法接收我的 Intent 上的 putExtra 的 showname 它总是得到空值 这是我大多数意图的做法 但我认为这次可能是因为pe
  • TypeScript var 与 import

    在 TypeScript 中 有什么区别 import http require http and var http require http 我看到这两种方式都在代码源中使用 它们可以互换吗 Your import语句是 TypeScri
  • Sandy-Bridge CPU规格

    我能够将有关 Sandy Bridge E 架构的一些信息整合在一起 但我并不完全确定所有参数 例如L2 缓存的大小 任何人都可以确认它们都是正确的吗 我的主要来源是64 ia 32 架构 优化 手册 pdf http www intel
  • 按需加载/卸载 ELF 部分?

    对于一个相当晦涩的用例 我想要一个 大型 静态链接的 Linux 可执行文件 由一小段控制代码和大段静态 只读 数据组成 为了节省内存 是否可以让加载器仅加载控制代码的部分 然后根据需要手动加载 RO 数据的部分 并在处理完成后再次卸载它们