文件运行而没有头文件

卡帕迪亚
  1. 在Ubuntu中删除软件包也会删除关联的头文件吗?
  2. 手动安装软件包和使用apt命令之间有区别吗?
  3. 如何找到特定头文件所需的正确软件包名称?
  4. 当头文件不存在时,为什么下面提到的代码可以运行?

细节:

我使用:安装了LIBABW,sudo apt-get install libabw-dev并且之前也使用tar.gz软件包手动安装了。

我编写了一个简单的C ++代码,使用libabw从Abiword文件中提取数据。代码中包含的头文件是

#include <stdio.h>
#include <string>
#include <cstring>

#include <librevenge-generators/librevenge-generators.h>
#include <librevenge-stream/librevenge-stream.h>
#include <libabw/libabw.h>

这是我运行的用于编译代码的命令:

g++ libabw.cc -I/usr/local/include/librevenge-0.0 -I/usr/local/include/libabw-0.1 -I/usr/local/include/librevenge-0.0 -I/usr/include/libxml2 -L/usr/local/lib -lrevenge-generators-0.0 -labw-0.1 -lrevenge-0.0 -lrevenge-stream-0.0

现在,我从提取的文件夹中手动删除libabw-dev软件包,并使用

sudo apt-get purge --auto-remove libabw-dev

我编写的代码仍然可以编译,并且仍从Abiword文档中提取数据。

运行时apt-file -x search '/libabw/libabw.h$',我得到输出libabw-dev: /usr/include/libabw-0.1/libabw/libabw.h但是目录/usr/include/libabw-0.1不存在。

润滑脂

在Ubuntu中删除软件包也会删除关联的头文件吗?

卸载软件包将删除属于该软件包的所有文件。如果是-dev软件包,则通常会有头文件作为软件包的一部分。另一方面,如果您同时安装了libfoo软件包和libfoo-dev,并且libfoo卸载libfoo-dev软件包,则该软件包可能会保留在您的系统上,并且保留在标头文件中。

手动安装软件包和使用apt命令之间有区别吗?

绝对。手动安装文件只是意味着您将一些文件放在系统上的某个位置。如果安装软件包,则软件包管理器会跟踪在何处安装了什么。这对于适当的清理是必需的。此外,还对程序包进行配置,使库和标头最终位于通常分别由链接器和编译器找到的路径下。您也可以手动执行此操作,但这容易出错-更重要的是,弄乱了程序包管理器的标准安装路径(例如,手动将某些文件放在一个apt写入自身的目录中)可能会损害系统的某些部分。

如何找到特定头文件所需的正确软件包名称?

我不知道有哪个软件包可以将各个标头字段拆分为多个软件包。如果您对的标头感兴趣foo,请检查是否apt-cache search foo产生-dev包。这样就足够了。

当头文件不存在时,为什么下面提到的代码可以运行?

如果编译器#include在其搜索路径中某处找不到d文件,则会立即抱怨因此,该文件本。如果您已卸载提供了特定标头的软件包,则其余的手动安装必须仍然存在。正如您说的那样,您既通过手动方式也通过方式安装了标头apt,我怀疑手动安装对于编译器仍然可见。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

头文件没有被读取?

没有头文件的C / C ++程序

MingW头文件没有标签

gcc没有选择内核头文件

包含没有“.h”格式的头文件

Ajax没有设置头文件-与TS反应

Xcode在头文件(包括自身)上没有警告

没有在Xcode中添加UITests桥接头文件

没有extern的头文件中的全局变量

项目中可用的本地头文件,但make没有给出此类文件或目录错误

Cmake链接共享库:当包含库中的头文件时,“没有这样的文件或目录”

为什么修改了源文件和头文件,但是没有重新编译makefile

在C中运行“ parsefmt”的头文件?

cmake 可以包含一个有头文件和 lib 文件但没有 .cmake 文件的库吗?

无法打开源文件“所有 cpp 头文件”并且全局范围没有“某些文件名”错误

如果我没有在头文件中声明所有函数,会发生什么?

运行带有dep的vet时找不到头文件

我们可以仅具有内联全局函数的头文件,这意味着没有.cpp文件吗?

在没有默认构造函数的情况下实例化头文件中声明的变量

C 包装 C++ 库,没有不必要的头文件

为什么头文件没有在其他编程语言中流行起来?

从头文件<string>,<stack>编译没有给出任何输出

为什么在头文件中定义`const int`时没有重复的定义错误?

Elixir-为什么这些重复的头文件没有编译器警告?

Swift没有选项在Build Options下添加Ob-C桥接头文件

VisualStudio 2010-没有更多的自动预编译头文件吗?

没有头文件如何使用C++调用其他模块中的函数?

没有识别从头文件调用到主 C++ 的方法?

安装的包有过时的头文件