微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

无法在Ubuntu上编译C代码 #包括错误

我试图在最新版本的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丢失的标题或什么? 谢谢。

如何将固件文件存储到头文件(.h)

如何将单个头文件应用到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] 举报,一经查实,本站将立刻删除。

相关推荐