当前位置: 首页 > news >正文

Linux 安装交叉编译器后丢失 `<asm/errno.h>` 的问题及解决方案

前言

在 Linux (Ubuntu等)环境下安装某些软件或开发环境时,我们可能会意外地引入交叉编译工具链,尤其是用于 ARM 架构的交叉编译器,比如 gcc-arm-linux-gnueabi 等。而这种行为会修改系统原有的开发环境,甚至导致无法编译原生程序。本文记录一次在 Ubuntu 18.04 上编译 C 程序时遇到 fatal error: asm/errno.h: No such file or directory 的报错,并给出详细排查和恢复步骤。


❗ 问题描述

在执行 make 或使用 gcc 编译一个看似正常的程序时,报出如下错误:

/usr/include/linux/errno.h:1:10: fatal error: asm/errno.h: No such file or directory#include <asm/errno.h>^~~~~~~~~~~~~
compilation terminated.

这意味着系统在 /usr/include/ 路径下未能找到 asm/errno.h,而这个头文件是 Linux 内核用户空间 API 中的一部分,通常是符号链接或文件指向实际的内核头路径。

系统上查看这个 ‘asm/errno.h’ 文件是存在的,就是指引 .h 头文件是有问题的。


⚙️ 这些头文件到底来自哪?

在 Linux 系统中,/usr/include/asm 并不是实际目录,而是一个符号链接,通常指向 asm-generic 或特定架构的头文件。例如:

/usr/include/asm -> asm-generic/

其中:

  • asm/errno.h 是一个与架构相关的头文件,一般在安装 linux-libc-d

相关文章:

  • .idea和__pycache__文件夹分别是什么意思
  • Spark-Core(双Value类型)
  • 边缘计算,运维架构从传统的集中式向分布式转变
  • 亿级流量系统架构设计与实战(五)
  • Python 识别图片上标点位置
  • NVM完全指南:安装、配置与最佳实践
  • stm32常见错误
  • 网站网页经常 400 错误,清缓存后就好了的原因剖析
  • Python赋能自动驾驶:如何优化路径规划,让AI驾驶更聪明?
  • AI驱动的Kubernetes管理:kubectl-ai 如何简化你的云原生运维
  • SpringBoot3集成Mybatis
  • iPhone 和 Android 在日期格式方面的区别
  • 报表的那些事:四部演进史——架构视角下的技术跃迁与实战思考
  • java中try..catch如何捕捉超时的情况
  • LeetCode:对称二叉树
  • 编程日志4.27
  • RPA与After Effects 2024深度融合:自动化影视特效全链路革命
  • Unity垃圾回收(GC)
  • Spring Boot 中 AOP 的自动装配原理
  • 如何使用极狐GitLab 软件包仓库功能托管 npm?
  • 中国科协发声:屡禁不止的奇葩论文再次敲响学风建设警钟
  • 中国金茂新任命三名副总裁,撤销区域公司
  • 英国和美国就关税贸易协议条款达成一致
  • 成立6天的公司拍得江西第三大水库20年承包经营权,当地回应
  • 百亿基金经理调仓路径曝光,张坤、陈皓、胡昕炜又有新动作
  • 青岛鞋企双星名人集团家族内斗:创始人发公开信指控子孙夺权