在我正在开发的嵌入式设备上,启动时间是一个重要问题。整个应用程序由多个使用一组库的可执行文件组成。由于FLASH存储空间有限,我们希望使用共享库。为什么使用共享库时,Linux上的应用程序启动较慢?
应用程序像往常一样编译并链接到共享库,并且闪存的数量按预期减少。 与链接到静态库的版本的区别在于应用程序的启动时间长了大约20秒,我不知道为什么。
该应用程序在Linux 2.6.17 OS, 16 MB FLASH(JFFS文件系统)和32 MB RAM上以180 MHz的ARM9 CPU运行。
@格伦来扩充:你真的认为, dl_open()调用需要很长时间吗?作为交换,启动速度应该更快一点,因为更少的代码需要加载 – chrmue 2009-09-11 13:02:16
@chrmue是的,它可以。必须加载相同数量的代码,但是dlopen有额外的开销。如果你的应用的两个版本之间的唯一区别是静态v的共享库,那么是的,我期望看到共享版本需要更长的时间才能加载。 – Glen 2009-09-11 13:13:09
您可能可以通过预加载来消除一些性能损失。 http://sourceforge.net/projects/preload/ – supercheetah 2009-10-26 17:43:59