Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 内存和静态/共享库中的程序位置_C_Caching_Memory_Shared Libraries_Static Libraries - Fatal编程技术网

C 内存和静态/共享库中的程序位置

C 内存和静态/共享库中的程序位置,c,caching,memory,shared-libraries,static-libraries,C,Caching,Memory,Shared Libraries,Static Libraries,当我运行一个程序(在linux中)时,它会全部加载到物理内存中吗?如果是这样,使用共享库而不是静态库是否有助于缓存?一般来说,什么时候应该使用共享库,什么时候应该使用静态库?我的代码要么用C写,要么用C++编写。这更深入地说明了共享库的优势 所以也对这个话题进行了深入的探讨 几乎所有上述文章都是基于共享库的。维基百科试图拯救静态库:) 从 将库与 可执行文件,而不是动态链接它们。最重要的 应用程序可以确定其所有库都是 演示并确认它们是正确的版本。这避免了依赖性 问题。通常,静态链接会导致显著

当我运行一个程序(在linux中)时,它会全部加载到物理内存中吗?如果是这样,使用共享库而不是静态库是否有助于缓存?一般来说,什么时候应该使用共享库,什么时候应该使用静态库?我的代码要么用C写,要么用C++编写。这更深入地说明了共享库的优势

所以也对这个话题进行了深入的探讨

几乎所有上述文章都是基于共享库的。维基百科试图拯救静态库:)

将库与 可执行文件,而不是动态链接它们。最重要的 应用程序可以确定其所有库都是 演示并确认它们是正确的版本。这避免了依赖性 问题。通常,静态链接会导致显著的错误 业绩改进

静态链接也可以允许应用程序 包含在单个可执行文件中,简化了分发 安装

有了静态链接,包含这些内容就足够了 库中由直接或间接引用的部分 目标可执行文件(或目标库)

有了动态库 整个库已加载,因为事先不知道是哪个库 函数将由应用程序调用。这一优势是否有效 实际意义取决于图书馆的结构

这篇文章涵盖了你想要的东西。这更深入地说明了共享库的优势

所以也对这个话题进行了深入的探讨

几乎所有上述文章都是基于共享库的。维基百科试图拯救静态库:)

将库与 可执行文件,而不是动态链接它们。最重要的 应用程序可以确定其所有库都是 演示并确认它们是正确的版本。这避免了依赖性 问题。通常,静态链接会导致显著的错误 业绩改进

静态链接也可以允许应用程序 包含在单个可执行文件中,简化了分发 安装

有了静态链接,包含这些内容就足够了 库中由直接或间接引用的部分 目标可执行文件(或目标库)

有了动态库 整个库已加载,因为事先不知道是哪个库 函数将由应用程序调用。这一优势是否有效 实际意义取决于图书馆的结构


共享库主要用于具有可以跨不同程序使用和“共享”的功能的情况。在这种情况下,您将有一个单一点,所有程序都将从中获取其方法。但是,这会产生依赖性问题,因为现在编译的程序依赖于库的特定版本

静态库主要用于您不希望出现依赖性问题,也不希望程序关心目标系统上安装了哪些X或Y库的情况

那么,用哪一个呢?。为此,您应回答以下问题:

  • 您的程序将在不同的平台或Linux发行版上使用吗?(例如红帽、Debian、SLES11-SP1)
  • 您是否有被不同二进制文件使用的复制代码
  • 你是否设想将来其他项目会从你的工作中受益

  • 我认为这是一个逐案的决定,并不是一个一刀切的答案。

    共享库主要用于具有可在不同程序中使用和“共享”的功能的情况。在这种情况下,您将有一个单一点,所有程序都将从中获取其方法。但是,这会产生依赖性问题,因为现在编译的程序依赖于库的特定版本

    静态库主要用于您不希望出现依赖性问题,也不希望程序关心目标系统上安装了哪些X或Y库的情况

    那么,用哪一个呢?。为此,您应回答以下问题:

  • 您的程序将在不同的平台或Linux发行版上使用吗?(例如红帽、Debian、SLES11-SP1)
  • 您是否有被不同二进制文件使用的复制代码
  • 你是否设想将来其他项目会从你的工作中受益
  • 我认为这是一个个案决定,不是一个一刀切的答案