(qt / embedded)如何在运行程序之前加载库

时间:2016-12-01 02:57:13

标签: qt embedded-linux

早上好。大家。

我正在使用qt 4.8。 (嵌入式linux) 服务器应用程序正在使用qprocess()执行客户端应用程序。此时,客户端应用程序加载缓慢,因此当用户看到系统时系统似乎暂停。

我认为缓慢的原因是将外部库加载到内存中的时间。所以我想知道当服务器应用程序通过init进程时,是否有一种方法可以预加载客户端应用程序使用的库。

如果有更好的方法,请告诉我。谢谢。

2 个答案:

答案 0 :(得分:1)

由于其他应用程序必须在启动时加载自己的库,这不是一件容易的事,但是你可以通过准备所需的应用程序及其库来从ramdisk加载而不是从硬盘加载来绕过缓慢的加载。磁盘。

在主应用程序中使用mount

创建RAM磁盘
sudo mount -t tmpfs -o size=200M none /mnt/ramdisk

复制所有必需的文件并设置$LD_LIBRARY_PATH作为指向您的ramdisk(Qt)的环境

auto env = QProcess::systemEnvironment();
env.insert("LD_LIBRARY_PATH","/mnt/ramdisk");

将新环境设置为QProcess的环境。由于我不是100%确定这将从那里加载您的库,作为替代方案,您可以在chroot环境中的chroot中创建/usr/lib环境并设置库。

我们的想法是将从RAM加载的库和应用程序放入RAM,这比从磁盘加载要快得多。

答案 1 :(得分:0)

预加载和预链接可能会有所帮助。从未使用它们,但发现了一些文档:https://wiki.archlinux.org/index.php/Preload