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

warning: _close is not implemented and will always fail

 相关问题:

一、undefined reference to `_exit

undefined reference to ‘end‘

warning: _close is not implemented and will always fail

一、环境:

ubuntu24.04实体机、

arm-none-eabi-gcc      gcc version 13.2.1 20231009 (15:13.2.rel1-2)

二、问题:

相同的错误还有:

warning: _close is not implemented and will always fail

warning: _lseek is not implemented and will always fail

warning: _read is not implemented and will always fail

warning: _write is not implemented and will always fail

三、分析

是因为libnosys.a,它提供了一个“空壳”实现(stub)来防止链接错误,但所有 I/O 系统调用(如 _close, _read, _write, _lseek, _open, _fstat, _isatty 等)都只是返回错误码 -1 并设置 errno = ENOSYS

四、解决

你只是裸机跑程序,不使用文件系统、串口 I/O✅ 可以忽略
你用了 printf/scanf,但重定向到了 UART✅ 可以忽略
你用了 fopen/fclose 或 POSIX 文件操作

❌ 会失败,需要实现系统调用

✅ 方法一:忽略警告(推荐裸机开发)

在链接时添加:

bash

复制

-Wl,--allow-multiple-definition -lnosys

✅ 方法二:自己实现 _close(如果你需要)

如果你确实用了 close(),可以手动实现一个空壳版本:

c

复制

#include <errno.h>
#include <unistd.h>int _close(int file) {errno = ENOSYS;return -1;
}

 ✅ 用自己的函数实现裸机开发(_close, _read, _write, _lseek, _open

如果你只是用 printf 重定向到 UART,只需要实现 _write,其他的系统调用可以保留为 stub:

c

int _write(int file, char *ptr, int len) {// 重定向到 UARTfor (int i = 0; i < len; i++) {uart_send(*ptr++);}return len;
}

http://www.dtcms.com/a/287510.html

相关文章:

  • 驾驭 Spring Boot 事件机制:8 个内置事件 + 自定义扩展实战
  • Custom SRP - Custom Render Pipeline
  • SurfaceView、TextureView、SurfaceTexture 和 GLSurfaceView
  • 立创EDA中双层PCB叠层分析
  • 原码、反码和补码在计算机中的运算规则有何不同?
  • 医疗AI与融合数据库的整合:挑战、架构与未来展望(上)
  • 小谈相机的学习过程
  • 软考 系统架构设计师系列知识点之杂项集萃(112)
  • jvm-sandbox-repeater 录制和回放
  • 基于深度学习的微表情识别算法研究
  • 智慧园区工程监控与工单管理系统需求文档
  • Go语言里的map
  • RocketMQ源码级实现原理-NameServer路由机制
  • 解锁C++性能密码:TCMalloc深度剖析
  • 低代码平台ToolJet实战总结
  • Java学习--------消息队列的重复消费、消失与顺序性的深度解析​
  • n8n教程分享,从Github读取.md文档内容
  • Redisson RLocalCachedMap 核心参详解
  • Astro:前端性能革命!从原生 HTML 到 Astro + React 的升级指南
  • Flutter基础(前端教程①⑤-API请求转化为模型列成列表展示实战)
  • 前端面试专栏-工程化:28.团队协作与版本控制(Git)
  • 运用KANO模型分析扫地机器人用户需求
  • LangGraph教程9:LangGraph检查点和Send机制
  • Linux 基础命令:文件和目录操作、文件内容查看、进程管理
  • 【嵌入式电机控制#16】电流环(三):过采样提高采集精度看门狗监测总线电压
  • Nginx 实战 :使用logrotate实现日志轮转与保留策略!
  • 【数据结构】二叉树初阶详解(一):树与二叉树基础 + 堆结构全解析
  • 2025 Data Whale x PyTorch 安装学习笔记(Windows 版)
  • Kotlin方差
  • 403 Forbidden:无权限访问请求的资源如何处理