"目录的正确方法是什么?-6ren"> "目录的正确方法是什么?-我的操作系统是 ArchLinux , 并编写一个简单的程序,其中只包含 : #include void main(void) {} 编译提示: test.c:1:10: fatal error:-6ren">
gpt4 book ai didi

c - 在 ArchLinux 中包含 ""目录的正确方法是什么?

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:38:45 29 4
gpt4 key购买 nike

我的操作系统是 ArchLinux , 并编写一个简单的程序,其中只包含 <uapi/linux/ptrace.h> :

#include <uapi/linux/ptrace.h>

void main(void) {}

编译提示:

test.c:1:10: fatal error: uapi/linux/ptrace.h: No such file or directory
#include <uapi/linux/ptrace.h>
^~~~~~~~~~~~~~~~~~~~~
compilation terminated.

我检查 /ust/include/uapi目录,发现里面是空的。最后,我找到了正确的 uapi位置是/usr/lib/modules/4.11.9-1-ARCH/build/include/uapi .那么使用 <uapi/linux/..> 的规范方式是什么?在ArchLinux ?创建指向 /usr/lib/modules/4.11.9-1-ARCH/build/include/uapi 的新链接或将路径放入 C_INCLUDE_PATH ?它们看起来都有点奇怪。

最佳答案

长话短说:pacman -S linux-api-headers#include <linux/ptrace.h>


UAPI 代表用户 API,是内核源代码中文件夹的名称,旨在作为用户可访问的内核头文件的一部分复制到安装中。对于 Arch,其中一些 header 被复制到 /usr/include/linux/ (加上一些内核编译生成的文件)。但这不是默认安装的一部分,它实际上是分开在不同的包中的:linux-api-headers (安装后,您可以使用 #include <linux/ptrace.h> )。

没有/usr/include/uapi这是设计使然,原始uapi文件夹的内容被直接复制到/usr/include中。 .

因此,除非您正在编写内核模块,否则您可能正在寻找的是 #include <linux/ptrace.h> .

关于c - 在 ArchLinux 中包含 "<uapi/..>"目录的正确方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45340907/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com