【问题标题】:How to search for header files in usr/include/linux如何在 usr/include/linux 中搜索头文件
【发布时间】:2015-01-17 07:42:35
【问题描述】:

我正在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 添加到搜索路径中。它是否正确?我对路径进行硬编码的解决方案是最好的解决方案吗?

【问题讨论】:

  • 文件中time.h 的标头保护是否不同?
  • 你不能只在文件中使用#include <linux/joystick.h>吗?
  • 是的,这很有效,很简单!谢谢:)
  • @EtanReisner psst Karnivaurus 说您的评论在没有标记您的情况下有效。我敢打赌,如果你把它移到一个答案上,他/她会给你甜蜜的互联网积分。

标签: c++ ubuntu makefile cmake


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-10-01
    • 2014-11-24
    • 2013-12-05
    • 2012-07-26
    • 1970-01-01
    • 2014-01-16
    • 2021-06-15
    相关资源
    最近更新 更多