【问题标题】:Compiler says uuid.h not found but apt-get says it is编译器说未找到 uuid.h 但 apt-get 说是
【发布时间】:2016-05-11 02:59:24
【问题描述】:

在编译包含 uuid.h 的 C++ 项目时,出现编译错误:

致命错误:uuid.h:没有这样的文件或目录

我不确定出了什么问题。可能是我的编译器指令错误,或者我确实没有安装该文件(但我认为这不是问题)。

sudo apt-get install uuid-dev

以上命令输出:uuid-dev is already the newest version

我的 makefile 就是这样的:

all:
    g++ -o bin/myapplication src/main.cpp -std=c++11

编辑: 在 .h 文件中:

#include <uuid.h>

任何想法可能是什么问题?

【问题讨论】:

  • 你是像&lt;uuid.h&gt;还是"uuid.h"一样包含它
  • @Deryck 我在做#include &lt;uuid.h&gt;

标签: linux makefile posix


【解决方案1】:

包的file list 显示它包含/usr/include/uuid/uuid.h。由于您的默认包含路径会查找相对于 /usr/include 的文件,因此您需要编写 &lt;uuid/uuid.h&gt;,或将 -I/usr/include/uuid 添加到您的编译选项中。

但是,该软件包还提供了一个 .pc 文件以与 pkg-config 一起使用,该文件旨在抽象出您需要哪些编译器选项来针对库构建程序的详细信息。如果你运行pkg-config --cflags uuid,你会得到输出-I/usr/include/uuid,如果你运行pkg-config --libs uuid,你会得到输出-luuid。这些旨在被纳入您的程序构建中。

由于您使用 Make,您应该将这些行添加到您的 Makefile

CFLAGS += `pkg-config --cflags uuid`
LDFLAGS += `pkg-config --libs uuid`

这会自动将必要的-I-l 选项合并到你的编译命令中——它也可以在UUID 库可能安装在不同位置的其他系统上工作。

【讨论】:

    【解决方案2】:

    我相信更新版本的 uuid 标头是 &lt;uuid/uuid.h&gt;

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-12-21
      • 2020-07-20
      • 2023-03-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多