Linux 共享库

Posted

技术标签:

【中文标题】Linux 共享库【英文标题】:Linux Shared Library 【发布时间】:2015-03-13 14:37:01 【问题描述】:

我对 linux 应用程序开发非常陌生。

我有两个库共享库 libGetData.so 和 libProcessData.so。

我在 Linux PC 上运行两个不同的 C++ 应用程序 A 和 B,并在两个应用程序中使用这两个库。

两个库中的静态变量都很少。

但是,当我在应用程序 A 的 libGetData.so 库中设置一个静态变量时,它并没有反映在应用程序 B 中。

我的目标是如果我在任何应用程序中使用共享库并在该库中设置任何静态变量。同样的事情应该反映在使用相同库的另一个应用程序上。

请帮帮我...

【问题讨论】:

只共享库代码,不共享变量内存。每个进程都有自己的一块(虚拟化)RAM 来运行库代码。 【参考方案1】:

但是,当我在应用程序 A 的 libGetData.so 库中设置一个静态变量时,它并没有反映在应用程序 B 中。

正确。

我的目标是如果我在任何应用程序中使用共享库并在该库中设置任何静态变量。同样的事情应该反映在使用相同库的另一个应用程序上。

不,共享库不是这样工作的。

共享库允许库的不变部分由多个进程共享,但这纯粹是操作系统级别的实现细节。它们确实意味着进程共享一个地址空间。不同进程中的变量是不同的,不共享的。

为了让进程进行通信,它们需要使用某种形式的Inter-Process Communication (IPC),例如管道、套接字或共享内存(与共享库无关)。

【讨论】:

以上是关于Linux 共享库的主要内容,如果未能解决你的问题,请参考以下文章

linux 静态库共享库

如何将共享库链接到Linux中的其他共享库?

Linux之静态库共享库

linux管理共享库

linux 静态库共享库

linux 静态库共享库