如何在 usr/include/linux 中搜索头文件

How to search for header files in usr/include/linux

本文关键字:搜索 文件 linux include usr      更新时间:2023-10-16

我正在用 Ubuntu 中的 cmake 编写一个C++程序,它使用 /usr/include/linux 中的头文件joystick.h。默认情况下,如果我使用 #include <joystick.h>make似乎无法在默认目录中找到joystick.h。因此,我将行include_directories (/usr/include/linux)添加到CMakeLists.txt,以便能够找到此标头。

问题是,我现在收到各种错误,例如error: redefinition of ‘struct timeval’error: redefinition of ‘struct timezone’。这似乎是因为在/user/include/usr/include/linux中都有一个标题time.h。这些文件中的标头保护分别是#ifndef _TIME_H#ifndef _LINUX_TIME_H。因此,我能想到的唯一解决方案是在我的源代码中对joystick.h路径进行硬编码。

因此,在我看来,由于这些重新定义问题,/usr/include/linux永远不应该添加到搜索路径中。这是对的吗?我的路径硬编码解决方案是最好的解决方案吗?

除非有理由不这样做(我想可能有),否则似乎只在源文件中使用 #include <linux/joystick.h> 将是这里最简单的解决方案。