gpt4 book ai didi

C 安装库 - 这是什么?

转载 作者:行者123 更新时间:2023-11-30 20:54:56 24 4
gpt4 key购买 nike

我目前正在尝试在 c 中安装一个库(特别是 libsndfile)。它告诉我需要“安装”和库。我很困惑,“安装”库到底在做什么?

为什么我不只包含头文件和源代码文件?

我尝试过用谷歌搜索这个,但没有取得太大的成功。有人愿意解释或推荐一篇讨论这个问题的文章吗?

谢谢,

最佳答案

为了包含头文件,您的项目需要知道这些头文件在哪里。您可以告诉预处理器它们在哪里,通常使用-I,但为了方便起见,您的系统有一组默认情况下会搜索的目录。这称为“包含路径”。像 /usr/include/usr/local/include 之类的地方是典型的。

安装库通常意味着将其放入包含路径中。 sndfile.h 可能会进入 /usr/local/include/sndfile.h

库中的代码有点不同。安装过程会将代码编译成 shared library所有进程都可以使用。通过使用共享库,而不是将其编译到每个程序中,可以减少系统范围内的代码大小和内存使用量。与头文件一样,共享库也可以在库路径中找到。 /usr/lib/usr/local/lib 是常见的示例。

共享库还有一个优点,即一旦升级,使用它的每个程序也会升级。这对于修复错误和堵塞安全漏洞非常有用。缺点是如果共享库引入错误或安全漏洞,或者更改其接口(interface),则会影响使用它的每个程序。

<小时/>

安装过程应记录在项目源的READMEINSTALL 文件中。通常是...

./configure
make
make check
make install

但通常您可以使用包管理器更安全、更轻松地完成此操作。例如,Debian has a libsndfile package Ubuntu 也是如此。这样它就会保持最新。

<小时/>

如果您想分发依赖于另一个库的程序,您有三种选择。

首先是让用户手动安装该库。这对大多数用户来说都是一个痛苦。

接下来是使用打包系统,like that which comes with Ubuntu ,并将您的软件打包。然后它可以声明对库包的依赖关系。这很好,但它需要为每个主要发行版制作一个包。

您可以将库与源代码一起分发。构建源代码后,也构建库。如果您将程序作为二进制文件分发,则也可以分发已编译的库。这就是当今许多应用程序的样子:充满编译代码及其所有必要支持库和框架的目录。一个例子是 the OS X .app bundle .

关于C 安装库 - 这是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36168702/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com