我想在两个不同的 C 程序中使用相同的库函数(即 OpenSSL 库)进行计算。我如何确保两个程序都使用通用库,意味着仅库的一个副本加载到共享主内存中,并且两个程序都从该内存位置访问该库计算?
例如,当第一个程序访问库进行计算时,它会从主内存加载到缓存中,当第二个程序稍后想要访问它时,它将访问缓存中的数据(已经由第一个程序加载),不再来自主内存。
我在Linux下使用GCC。任何解释或指示将不胜感激。
最佳答案
代码由操作系统共享,不仅是共享库,还包括同一二进制文件的可执行文件 - 您无需执行任何操作即可拥有此功能。它是系统内存管理的一部分。
数据不会在两个进程之间共享。您需要一个进程中的线程来共享数据。但除非您愿意,否则只需确保两个程序使用完全相同的共享库文件(.so 文件)即可。通常你不需要考虑这个;仅当两个程序使用不同版本的库时才可能很重要(当然它们不会共享)。
看看 ldd /path/to/binary
的输出查看二进制文件使用了哪些共享库。
关于c - 如何在c中的两个程序之间共享库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21475018/