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

[ubuntu]编译共享内存读取出现read.c:(.text+0x1a): undefined reference to `shm_open‘问题解决方案

问题log

/tmp/ccByifPx.o: In function `main':
read.c:(.text+0x1a): undefined reference to `shm_open'
read.c:(.text+0xd9): undefined reference to `shm_unlink'
collect2: error: ld returned 1 exit status

程序代码

#include <stdio.h>
#include <stdlib.h>
#include <fcntl.h>
#include <sys/mman.h>
#include <unistd.h>#define SHM_NAME "./mac_shm"
#define SHM_SIZE 18  // MAC地址长度为17个字符,加上一个终止符int main() {// 打开共享内存对象int shm_fd = shm_open(SHM_NAME, O_RDONLY, 0666);if (shm_fd == -1) {perror("shm_open");exit(EXIT_FAILURE);}// 映射共享内存char *shm_ptr = mmap(0, SHM_SIZE, PROT_READ, MAP_SHARED, shm_fd, 0);if (shm_ptr == MAP_FAILED) {perror("mmap");exit(EXIT_FAILURE);}// 读取MAC地址printf("MAC Address: %s\n", shm_ptr);// 解除映射if (munmap(shm_ptr, SHM_SIZE) == -1) {perror("munmap");exit(EXIT_FAILURE);}// 关闭共享内存对象close(shm_fd);// 删除共享内存对象shm_unlink(SHM_NAME);return 0;
}

问题分析

编译结果实际上是说,没include相应的头文件,或是头文件不存在,man shm_open看到如下内容

解决方案

gcc shm_test.c -lrt -o shm_test

http://www.lryc.cn/news/489286.html

相关文章:

  • Python Matplotlib 安装指南:使用 Miniconda 实现跨 Linux、macOS 和 Windows 平台安装
  • DimensionX 部署笔记
  • django从入门到精通(五)——表单与模型
  • C语言Day 03 学习总结
  • kafka中是如何快速定位到一个offset的
  • 视频对接rtsp协议学习
  • 【系统架构设计师】真题论文: 论企业信息化规划的实施与应用(包括解题思路和素材)
  • 【ARM Coresight OpenOCD 系列 6.1 -- JTAG Commands】
  • 开源许可协议
  • 241121学习日志——[CSDIY] [InternStudio] 大模型训练营 [11]
  • 跟千里马学框架 遇到的坑
  • Swift从0开始学习 协议和扩展 day5
  • javaScript交互案例
  • 【自动驾驶】数据集合集!
  • el-table表头前几列固定,后面几列根据接口返回的值不同展示不同
  • 【Redis】redis缓存击穿,缓存雪崩,缓存穿透
  • HBase Flink操作
  • C# .Net Core通过StreamLoad向Doris写入CSV数据
  • React-自定义Hook与逻辑共享
  • 蓝桥杯每日真题 - 第17天
  • 游戏开发实现简易实用的ui框架
  • vue3的attr透传属性详解和使用法方式。以及在css样式的伪元素中实现
  • 【仿真建模-MESA】框架简介
  • Linux环境基础开发工具的使用(yum、vim、gcc、g++、gdb、make/Makefile)
  • VSCode 间距太小
  • 【K8S系列】imagePullSecrets配置正确,但docker pull仍然失败,进一步排查详细步骤
  • 【ARM Coresight OpenOCD 系列 5.1 -- OpenOCD 无法识别CPUID 问题: xxx is unrecognized】
  • 如何实现点击目录跳转到指定位置?【vue】
  • SQL 通配符
  • ubuntu显示管理器_显示导航栏