- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
有时我看到编译器提示这一行
#include <sys/io.h>
与
fatal error: sys/io.h: No such file or directory
如果我简单地把它改成
#include <sys/uio.h>
它会神奇地起作用。有人可以向我解释其中的区别吗?为什么有些操作系统有一个而没有另一个?
编辑:这个问题发生在 Linux 上,而不仅仅是 OS X。
最佳答案
一般来说,当编译器找不到头文件时,简单地更改被包含的头文件的名称是不安全的,甚至是不明智的。具有相似名称的 header 之间不一定有任何关系。
这似乎是这里的情况:GLIBC 头文件 sys/io.h
没有声明 POSIX 指定的头文件 sys/uio.h 的 vector I/O 函数
,至少不是直接的。其实GLIBC也提供了sys/uio.h
。他们是不同的。 C 和 POSIX 都没有提供任何理由相信一个系统上的 sys/uio.h
会提供由名为 sys/io.h
的 header 提供的任何声明或任何其他系统。
如果您正在尝试构建 C 代码并且找不到某些 header ,那么首先要考虑的是包含搜索路径,以及 header 名称是否需要添加或删除路径段。接下来要考虑的是构建环境中是否完全需要该 header 。如果不是,则更改 header 以命名实际存在的其他 header 将修复构建,但同时删除 include
指令也是如此。
我会给它更好的评价,事实上,删除或注释掉这样一个失败的 include
指令,确保警告被启动,然后看看编译器遗漏了哪些声明(如果有的话)提示。这将为您提供一个句柄,用它来确定应该包含哪个 header (如果有)来代替缺失的 header 。
关于c - uio.h 和 io.h 有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33135596/
我的问题是如何使用单声道等待 UIO 驱动程序生成的中断。我已经为嵌入式系统创建了一个 UIO 驱动程序,它将在按下 gpio 按钮之前阻止读取,我已经用 C 程序对其进行了测试并且它可以工作。它是如
我正计划构建一个需要与用户空间设备驱动程序交互的 Linux 内核模块,并且我需要将数据导出到用户空间。阅读之后,我认为 UIO 接口(interface)可能正是我所需要的。 我看了一些例子,它们都
我正在尝试使用 uio_pdrv_genirq 驱动程序向用户空间公开中断。但是我只能在设备树中实例化 1 个设备,所有后续设备都无法通过探测。系统为zynq-7000,内核版本为3.9.0-xili
我正在研究运行 Yocto 的嵌入式处理器。我有一个修改过的 uio_pdrv_genirq.c UIO 驱动程序。 我正在编写一个库来控制 DMA。有一个函数写入设备文件并启动 DMA。第二个函数旨
有时我看到编译器提示这一行 #include 与 fatal error: sys/io.h: No such file or directory 如果我简单地把它改成 #include 它会神奇
我正在尝试使用 GCC 编译一些代码。在我的代码中,我调用了 process_vm_readv() 和 process_vm_writev()(这些是非标准的 Linux 扩展,请参见此处的手册页:h
我正在查看 QEMU 的 edu device ( source ) 它在 QEMU 中提供了一个基本的“教育”PCI 设备,它可以作为 PCI 设备从 QEMU guest (如 Linux)中访问
内核版本:4.19 Python版本:3.5.6 平台:Xilinx Ultrascale+ Zynq 我正在开发一些可以读取和写入 UIO 设备的 python 代码。我找到了一种有效的方法和一种失
我是一名优秀的程序员,十分优秀!