我试图在最新版本的ubuntu上编译一个C程序,以便将编译后的程序放到另一台机器上。 但是,当我编译与gcc prog.c -o编,我得到一个错误:“致命的错误:asm / page.h:没有这样的文件或目录”这里是标题:
#include <stdio.h> #include <errno.h> #include <stdlib.h> #include <string.h> #include <malloc.h> #include <limits.h> #include <signal.h> #include <unistd.h> #include <sys/uio.h> #include <sys/mman.h> #include <asm/page.h> #include <asm/unistd.h>
我在#include中得到一个错误。 它说,致命的错误:asm / page.h:没有这样的文件或目录。 就像我说的,我只是想编译它。 有没有办法让我find丢失的标题或什么? 谢谢。
如何将单个头文件应用到C项目的其余部分,以便不再需要它?
为什么linux中有多个fcntl.h?
Ubuntu中的skbuff.h文件在哪里?
检查文件是否是C中的特定types
通常情况下, asm/page.h只存在于Linux内核树中,通常在arch/<archname>/asm/page.h ,并且只能用于内核代码(或内核模块)。
另一方面, stdio.h和stdlib.h不能在内核代码中使用。 所以,你的原始代码最好看起来很腥。 很可能它从来不需要asm/page.h ,实际上它只是需要像linux/types.h (这是内核的asm/page.h之一包含的头文件)之一。
这些头文件不会丢失,它们已被移动。 ubuntu打包程序移动了一些东西,原来位于“/ usr / include / asm”中的头文件位于'/ usr / include / asm-generic'
sudo ln -s / usr / include / asm-generic / usr / include / asm
…或者,也许你可能缺乏必要的构建。 这在linux中编译代码是必要的。 安装build-essential
sudo apt-get install build-essential
现在重新创建适当的链接:
sudo ln -s / usr / include / asm-generic / usr / include / asm
Build-essential应该安装一个/ usr / include / asm-generic文件夹。 如果您缺少这样的文件夹,请重新安装build-essentials并验证文件夹是否存在。
/ usr / include / asm-generic文件夹是否存在?
它由build-essentials安装,但检查它是安装它的依赖项。
如果/ usr / include / asm-generic不存在,请尝试安装或重新安装linux-libc-dev。
这应该创建asm通用文件夹。 如果这样删除旧的链接并重新链接asm到泛型。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。