gpt4 book ai didi

linux - 为什么使用共享库时 Linux 上的应用程序启动速度较慢?

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:14:25 25 4
gpt4 key购买 nike

在我正在研究的嵌入式设备上,启动时间是一个重要的问题。整个应用程序由几个使用一组库的可执行文件组成。由于闪存中的空间有限,我们希望使用共享库。

应用程序在编译和与共享库链接时照常工作,并且 FLASH 内存量按预期减少。链接到静态库的版本的不同之处在于应用程序的启动时间大约长 20 秒,我不知道为什么。

该应用程序在 180 MHz 的 ARM9 CPU 和 Linux 2.6.17 操作系统上运行,16 MB 闪存(JFFS 文件系统)和 32 MB RAM。

最佳答案

因为共享库必须在运行时链接到,通常是通过 dlopen() 或类似的东西。静态库没有这样的步骤。

编辑:更多细节。 dlopen 必须执行以下任务。

  • 找到共享库
  • 将其载入内存
  • 递归加载所有依赖项(及其依赖项....)
  • 解析所有符号

这需要相当多的IO操作才能完成。

在静态链接程序中,以上所有操作都是在编译时完成的,而不是运行时。因此加载静态链接程序要快得多。

在您的情况下,您的代码必须在相对较慢的硬件上运行,这种差异被放大了。

关于linux - 为什么使用共享库时 Linux 上的应用程序启动速度较慢?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1410691/

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