Ubuntu:找不到ndbm.h

Ubuntu:找不到ndbm.h

我需要编译旧的 Apache 版本 1.3,编译过程失败,因为:

mod_auth_dbm.c:77:18: fatal error: ndbm.h: File or directory not found

这个ndbm.h文件在哪里?

答案1

在ubuntu中有apt-file一个包可以让你找到包含指定文件的包。你需要安装它

sudo apt-get install apt-file

更新缓存

apt-file update

然后你就可以搜索你需要的包

apt-file search ndbm.h

只有坦德拉包,包含具有该名称的文件。

libgdbm-dev 还包含 /usr/include/gdbm-ndbm.h。也许这就是您需要的。你可以尝试用它来编译。

附注您也可以使用搜索在 ubuntu 网站上。

答案2

这里的文件(Fedora 18)属于gdbm-devel,包含它的 Ubuntu 包应该以类似的方式命名。检查源的依赖关系,您可能需要与每个依赖关系相对应的一系列-devel包。

你需要一个过时的 apache 来做什么,而且它还存在已知的漏洞?为什么发行版的 apache 不工作?移植任何需要 apache 前进的东西可能比陷入史前时期要好得多......

答案3

gdbm 源代码将头文件放在/usr/include/gdbm.一些打包系统(例如 Arch Linux)放置了指向这些目录的符号链接(因此/usr/include/ndbm.h指向/usr/include/gdbm/ndbm.h),而至少一些基于 Debian 的系统省略了目录并重命名ndbm.hgdbm-ndbm.h(因此它们具有gdbm.hdbm.hgdbm-ndbm.h)。

我认为这是为了避免与不同的包发生冲突,但这是一个糟糕的解决方案。

解决此类问题的一种方法(特别是如果您没有修改系统目录的权限)是创建您自己的目录,例如 compat,放入从 到 的链接compat/ndbm.h/usr/include/gdbm-ndbm.h然后告诉编译器搜索您的 compat 目录(-Icompat)。然后,如果它在系统库中找不到该文件,它将在您自己的目录中找到正确的名称。

答案4

自 Debian 10 和 Ubuntu 18.04(可能更早,但这是此软件包支持的最旧版本)开始,相关文件可在libgdbm-compat-dev:

apt install libgdbm-compat-dev

相关内容