编译器说未找到 uuid.h 但 apt-get 说它是

saz*_*azr 6 linux posix makefile

编译包含 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
Run Code Online (Sandbox Code Playgroud)

编辑: 在 .h 文件中:

#include <uuid.h>
Run Code Online (Sandbox Code Playgroud)

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

Wyz*_*a-- 5

包的文件列表显示它包含/usr/include/uuid/uuid.h. 由于您的默认包含路径查找与 相关的文件/usr/include,因此您需要编写<uuid/uuid.h>或添加-I/usr/include/uuid到您的编译选项中。

但是,该软件包还提供了一个.pcpkg-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`
Run Code Online (Sandbox Code Playgroud)

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


Chr*_*ern 3

我住在较新版本的 uuid 中,标头是<uuid/uuid.h>