Linux头文件路径之困惑

VS2022+OpenEuler跨平台开发实战:如何正确配置Linux头文件路径避免#include报错 本文详细介绍了在VS2022与OpenEuler跨平台开发中如何正确配置Linux头文件路径,解决#include报错问题。通过图形化配置方案、远程连接建立和动态路径检测技巧,帮助开发者高效迁移C++项目到Linux环境,提升开发效率。 阅读详情

之前做的一直是IDE,对makefile、命令行之类接触不多。

很是困惑Linux中的头文件。譬如#include <stdio.h>,譬如#include <linux/module.h>,绝对路径是什么。。。

搜索了下具体的文件,发现往往有多份,路径也千奇百怪。譬如 内核/include/linux/...,再譬如 内核/include/uapi/linux/...,具体是怎么个区别?

搜到片帖子,http://www.cnblogs.com/QuLory/archive/2013/04/10/3011564.html,说如果在include/linux/和include/uapi/linux/.下有同名的文件,那通常前者会包含后者。还说之所以搞这么复杂,是为了更好的分开某些引用用户库文件和某些引用系统库文件。

网上有篇帖子讲的挺好,http://blog.youkuaiyun.com/dreaming_my_dreams/article/details/7745148,

#include <linux/***.h> 是在linux-2.6.29/include/linux下面寻找源文件。

#include <asm/***.h> 是在linux-2.6.29/arch/arm/include/asm下面寻找源文件。

#include <mach/***.h> 是在linux-2.6.29/arch/arm/mach-s3c2410/include/mach下面寻找源文件。

#include<plat/regs-adc.h>在linux-2.6.31_TX2440A20100510\linux-2.6.31_TX2440A\arch\arm\plat-s3c\include\plat


不过年代久远,现在最新都4.0了,不清楚是不是还这么个说法。

请教了下公司的同事,趾高气昂又支支吾吾,真是上火。

留着吧。

VS2022远程调试Linux程序避坑指南:从SSH配置到头文件引入的完整流程 本文是一份针对Visual Studio 2022远程调试Linux程序的深度避坑指南。文章详细解析了从安装必备组件、配置SSH连接与免密登录,到管理远程头文件、解决库依赖以及高级调试排错的完整流程,旨在帮助开发者高效搭建稳定、可理解的远程开发环境,避开常见陷阱。 阅读详情

相关推荐

C/C++头文件与宏定义实战指南:从原理到工程实践

头文件和宏定义是C/C++等系统级编程语言的预处理核心机制,负责代码的模块化、接口声明和条件编译。其原理在于编译前进行文本替换和依赖管理,直接影响编译效率、代码可维护性和跨平台兼容性。在工程实践中,头文件作为模块间的契约,需要遵循自包含、幂等和最小化原则,而宏定义则是一把双刃剑,既能实现条件编译和代码生成,也容易引发副作用和调试难题。尤其在嵌入式开发(如STM32)和游戏引擎(如Unity)等场景中,头文件路径配置、宏定义管理直接关系到开发效率和项目健壮性。本文针对linux+jni.h头文件路径、ardu

weixin_30596165的博客 392

Linux驱动编程【新驱动框架】

一、新字符设备驱动原理 1、以前的缺点 使用register_chrdev函数注册字符设备,浪费了很多的次设备号,而且需要我们自 己手动指定主设备号 2、int alloc_chrdev_region函数 如果没有指定设备号的话就是用这个函数来申请设备号 int alloc_chrdev_region(dev_t *dev, unsigned baseminor, unsigned count, const char ...

m0_59756458的博客 1888

基于AR和SLAM技术的商场智能导视系统技术原理详解

本文针对智慧商场室内导航需求,提出基于AR和SLAM技术的商场智能导视系统技术方案,实现了沉浸式导览体验并促进消费转化,助力商场运营升级。

维小帮定位导航的博客 1243

linux 驱动篇 笔记 --字符设备 led驱动

背景知识 linux 下任何 外设驱动都是 配置相应的寄存器 MMU(内存管理单元) 作用 完成虚拟空间到物理空间的映射 内存保护,设置寄存器的范围权限、设置虚拟存储空间的缓冲特性 内存管理 函数: 1. ioremap 函数:获取指定物理地址对应的虚拟地址 为宏 实际函数原型如下: void __iomem * __arm_ioremap(phys_addr_t phys_addr, size_t size, unsigned int mtype) 2、 iounmap函数:..

m0_37056522的博客 818

Mac新手必看:nvm安装全攻略(含常见错误解决方案)

本文为Mac开发者提供nvm安装与使用全攻略,涵盖环境准备、安装步骤、Shell配置优化及常见错误解决方案。详细讲解如何利用nvm管理多Node版本,提升开发效率,特别针对国内用户提供网络问题解决技巧,是Mac新手必备的Node版本管理指南。

weixin_28839699的博客 1612

《R语言实战》第八章之回归分析图形

回归分析图形 回归分析分为简单回归与复杂回归 1 : 简单线性回归即:模型中只包含一个因变量和一个自变量,有时候也会包含多项式, 这个图形描述了身高与体重的线性关系,这也是一个多项式图形 2:当我们的预测变量(自变量)不止一个时,就属于多元线性回归,而且多元线性回归中也可以包含多项式以及交互项 (1)在进行多远回归分析之前可以先描述变量之间的相关关系 上图为一个散点图矩阵,描述了五个变量之间的相关关系,我们可以通过非主对角线的散点图来查看两个变量之间的关系。 多元线性回归简单地就是OLS回归,通过lm和

Strawberry_Ya的博客 1834

关于linux驱动(应用)程序头文件使用

<br />驱动程序:<br /> <br />#include <linux/***.h> 是在linux-2.6.29/include/linux下面寻找源文件。<br />#include <asm/***.h> 是在linux-2.6.29/arch/arm/include/asm下面寻找源文件。<br />#include <mach/***.h> 是在linux-2.6.29/arch/arm/mach-s3c2410/include/mach下面寻找源文件。<br />#include <pl

newtonnl的专栏 3370

libiec61850实战:手把手教你用C语言动态获取IED设备模型(附完整代码解析)

本文详细介绍了如何使用libiec61850库通过C语言动态获取IED设备模型,包括环境配置、连接建立、模型遍历及错误处理等关键步骤。通过完整的代码示例和实战案例,帮助开发者掌握智能变电站通信中的核心技术,提升工业自动化系统的开发效率。

weixin_42519985的博客 434

编译linux驱动时提示很多源码头文件和定义缺失

一、问题描述 在写好驱动程序要编译的时候,出现以下错误提示(中间也有很多类似头文件和定义缺失的提示,篇幅问题没有放上来): make -C /home/lzh/study_1/alientek-alpha/kernel-alientek M=/home/lzh/study_1/study_drivers/1_chardevbase modules make[1]: Entering directory '/home/lzh/study_1/alientek-alpha/kernel-a...

weixin_46435653的博客 4336

测绘无人船避坑指南:云卓H12Pro遥控器接海康摄像头,从网络设置到RTSP流延迟优化全流程

本文详细解析了测绘无人船视频子系统的优化方案,重点介绍海康威视摄像头与云卓H12Pro遥控器的深度适配流程。从网络设置到RTSP流延迟优化,提供了一套经过实测的低延迟(<200ms)解决方案,适用于复杂水域环境下的测绘任务。

weixin_30415113的博客 627

4、I3C协议详解

I3C最初的设计目的是为移动设备创建一个能够使用多个传感器的单一接口。随着现代化移动设备对于传感器数量的增加以及对性能的提高,I2C和SPI已经达到了他们所能支持的临界点,而I3C的出现就是为了解决这一问题,I3C可以在同一根主线上支持更多的传感器设备,而且不会因为要支持中断或睡眠模式而增加额外的逻辑信号。I3C可以在更低功耗的情况下提供更快的传输速率,该特性的提升不止是对移动设备,对其他的嵌入式设备也都是很大的帮助。例如穿戴设备,需要在有限的物理空间中使用多个传感器并且要求更小的耗电。 一、简述..

迟子涵925的博客 2万+

无法打开源文件 “linux/time_types.h“ (dependency of “linux/ide.h“)

在Linux系统编程或者驱动开发中,你可能会遇到这样的问题:“无法打开源文件 'linux/time_types.h' (dependency of 'linux/ide.h')”。"无法打开源文件 'linux/time_types.h'"意味着编译器在尝试查找和打开名为"time_types.h"的头文件时遇到了困难。总结一下,在遇到“无法打开源文件 'linux/time_types.h' (dependency of 'linux/ide.h')”这样的问题时,请不要慌张。

高性价比服务器就选:蓝易云 872

搞定ESD(九):静电放电之PCB设计

不同信号参考地平面应尽量保持完整,减小静电电流流过参考地平面时造成的电位差,防止电位差导致的信号传输电平错误.主芯片GPIO信号布线应保持最短化,减小与参考地平面之间的电场耦合,同时也防止因信号环路面积较大耦合静电放电噪声干扰。外部端子接地引脚顶层采用分地设计,最好是直接过孔到完整参考地平面接地,避免与顶层信号包地、其它包地相连,防止顶层串扰耦合到其它信号,造成ESD问题。

记得诚 1952

linux mysql makefile_求助我在linux编程是遇到了makefile使用了环境变量

求助我在linux编程是遇到了makefile使用了环境变量发布时间:2015-10-17 21:39:57来源:红联作者:心弦linux我在linux编程是遇到了makefile使用了环境变量来定位头文件的问题!因为接触的不太多所以请大拿为我解惑一下给出我makefile引用的环境变量的脚本如下:basic pathHOME_SC = /www/work/tt#home bas...

weixin_39860757的博客 104

偏最小二乘回归分析原理详解和案例分析实例

偏最小二乘回归分析原理详解背景偏最小二乘回归分析 Partial least squares regression analysis基本思想建模步骤步骤一:分别提取两变量组的第一对成分,并使之相关性达最大步骤二:建立 y1,⋯ ,yp\boldsymbol{y}_{1}, \cdots, \boldsymbol{y}_{p}y1​,⋯,yp​ 对 u1\boldsymbol{u}_{1}u1​ 的回归及 x1,⋯ ,xm\boldsymbol{x}_{1}, \cdots, \boldsymbol{x}_{

从事脑科学核磁共振方法学研究,在Nature communications等权威期刊发表研究论文,熟练掌握磁共振处理方法和统计学方法,欢迎大家和我交流。 9977

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

linux头文件目录sys,Linux的目录结构和头文件相关;哪里找-> sys/types.h, sys/stat.h

KEYWORD : sys/types.h; sys/stat.h; linux; 头文件;reserve place; reserve place2018/Apr/01 更新:关于 sys/***.h 的头文件,在不同平台上通过建立软连接的方式可以解决。建立软连接的方式可以参考本人的这篇blog ===> 获得(读取)一个文件内的所有数据的字节总数 <=== 这个链接中的  其中...

weixin_36400833的博客 2042

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

Linux 中C/C++ search path(头文件搜索路径)

起因我拿到了一套Linux代码,代码中有这个头文件#include <unistd.h>,在Windows上查看缺少这个头文件,而这个头文件就是Linux中的系统文件。困惑因此我想在Linux下去查找这个文件。通过Linux指令: locate unistd.h 用指令cpp -v /dev/null -o /dev/null,看到GCC所用的搜索路径,即可解决问题

问题的博客 7143

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

别只盯着apt-get install:深入理解Linux头文件路径与编译器搜索机制的坑

本文深入探讨Linux开发中头文件路径与编译器搜索机制的常见问题,特别是当遇到`No such file or directory`错误时的解决方案。通过分析编译器搜索路径、系统头文件与内核头文件的区别,以及`-I`选项的高级用法,帮助开发者系统性地解决头文件缺失问题,提升开发效率。

weixin_30411819的博客 473

Vivado中Verilog头文件添加全解析:从路径机制到工程化实践

在FPGA开发中,头文件管理看似基础,却直接影响工程的构建稳定性和协作效率。Verilog中的`.vh`头文件承担着参数定义、宏声明等关键职责,而Vivado对include文件的搜索遵循固定顺序:先当前源文件目录,再工程设置的include目录。很多综合或仿真报错,并非工具问题,而是头文件路径未正确配置,且综合与仿真fileset各自独立,往往需要分别设置。本文深入梳理Vivado中Verilog头文件的三种添加方式:代码内硬编码路径、作为源文件加入工程、以及配置include目录,并对比其适用场景与维护

weixin_33978044的博客 171

apue.h头文件在哪下载?官方获取方法详解

在Linux环境下进行C语言编程时,apue.h头文件是许多学习《Unix环境高级编程》读者的一个常见需求。这个文件并非系统自带,而是书籍作者提供的自定义头文件

2509_93883384的博客 259

ESP32-C3编译报错排查:CMakeLists依赖配置与头文件路径修复指南

在嵌入式开发中,头文件搜索路径与组件依赖管理是构建系统的核心机制。当编译器无法定位头文件时,通常源于组件注册遗漏、依赖声明不完整或路径配置错误。理解CMake的依赖传递与头文件暴露原理,能显著提升工程的可维护性与跨平台兼容性。这一机制在ESP32-C3等RISC-V芯片的ESP-IDF开发中尤为关键,涉及组件自动扫描、REQUIRES与PRIV_REQUIRES的传递差异,以及INCLUDE_DIRS的路径解析规则。实际应用中,从传感器采集到蓝牙服务,任何组件化项目都可能因依赖链断裂而编译失败。本文围绕ES

weixin_33971977的博客 219

C/C++头文件命名冲突:从标准库覆盖到项目结构优化的安全编程实践

在C/C++编程中,头文件是模块化开发的核心组件,其核心作用是声明函数、宏和类型,供多个源文件共享。编译器通过预定义的搜索路径规则(如`#include`指令的尖括号与双引号区别)来定位头文件。若命名不当,极易引发命名空间污染,导致编译错误或链接失败,严重影响项目的可维护性和团队协作效率。其技术价值在于通过清晰的命名和路径管理,确保编译单元的一致性,从而构建健壮的软件架构。这一实践在嵌入式开发、系统编程及大型项目协作中尤为重要。例如,在STM32开发中,若自定义头文件与标准库的`math.h`重名,会因路径

weixin_30435261的博客 435

写C/C++总分不清头文件来源?这篇速查表帮你理顺

stdio.h><stdlib.h><string.h>:标准 C<unistd.h><sys/*.h>:POSIX / Unix 系统接口:Linux 专属<vector><string><thread>:C++ 标准库平时一眼先分层,再去查具体函数,就不会那么乱。C 与 C++ 头文件最容易让人混的地方,不在于名字难记,而在于它们背后的层级不同。哪些是标准 C哪些是 POSIX哪些是 Linux 专属哪些是 C++ 标准库。

qq_66695889的博客 337
上一篇: Linux container_of()
下一篇: Notepad++ 移动到另一视图之上下/左右结构
躺着的树懒
博客等级 码龄18年 31粉丝 44原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值