vscode阅读linux源码--Windows下使用clangd,头文件clang(pp_file_not_found)

vscode阅读linux源码–Windows下使用clangd,头文件clang(pp_file_not_found)
按照韦东山老师发布的,“在Windows使用VSCode搭建嵌入式Linux开发环境 ”一文搭建了通过ssh远程登陆linux,阅读源码。
链接如下:
在Windows使用VSCode搭建嵌入式Linux开发环境
但这种情况下电脑内存占用巨大,考虑将linux环境下,用bear make生成的compile_commands.json文件复制到windows环境下的linux源码目录下,实现不需要ssh的阅读代码和跳转。
结果头文件部分不能跳转,且clangd报错:clang(pp_file_not_found)。
解决方法:对compile_commands.json文件进行修改,将其中的linux环境下内核源码目录"directory": “/home/book/xxxxx/xxxxx”:
替换为windows下的linux内核源码目录"D:/linux/git_warehouse/01_all_series_quickstart/04a/source/linux_kernel/linux-4.9.88/linux-4.9.88",实现跳转和识别。
在这里插入图片描述

### 编译错误 'machine/ieeefp.h' 文件未找到的解决方案 当遇到 `clang(pp_file_not_found)` 报错提示 `'machine/ieeefp.h'` 文件未找到时,通常是因为编译器无法定位该头文件的位置。以下是可能的原因以及对应的解决办法: #### 1. **确认目标平台支持** - 头文件 `<machine/ieeefp.h>` 是特定于某些操作系统的标准库的一部分,在 FreeBSD 或 NetBSD 中较为常见[^1]。如果当前使用的工具链(如 Arm GNU Toolchain)不支持此头文件,则需要检查项目是否可以适配其他替代方案。 #### 2. **检查编译器路径设置** - 如果使用的是自定义工具链(例如 Arm GNU Toolchain),需确保其安装包中包含了所需的头文件集合。可以通过以下命令验证是否存在: ```bash find /path/to/toolchain/arm-none-eabi/include -name ieeefp.h ``` 若不存在,则可能是工具链版本较旧或者缺少必要的组件。 #### 3. **更新或替换头文件** - 对于缺失的标准头文件,可以从相关操作系统发行版下载并手动添加至工具链目录下。例如,FreeBSD 的头文件可从官方仓库获取,并放置到适当位置以便被发现: ```bash cp path_to_downloaded_ieeefp.h /path/to/toolchain/arm-none-eabi/include/machine/ ``` #### 4. **调整 CMakeLists.txt 或 Makefile** - 确保构建脚本正确指定了包含路径。对于基于 CMake 的项目,可以在 `CMakeLists.txt` 添加额外的 include 路径: ```cmake include_directories(/custom/path/to/includes) ``` - 使用 Makefile 构建时,可通过 `-I` 参数指定附加搜索路径: ```makefile CPPFLAGS += -I/custom/path/to/includes ``` #### 5. **利用 compile_commands.json** - 类似于 Linux 内核开发中的做法[^3],创建或修改 `compile_commands.json` 文件来显式声明所有依赖项及其所在位置。这有助于 IDE 和 LSP 工具(如 clangd)更精确解析源码结构。 #### 6. **切换兼容模式或其他实现** - 当原生头文件不可得时,尝试寻找功能等价但跨平台更好的选项。比如 IEEE 浮点数处理逻辑可以用标准 C 提供的功能代替一部分需求。 ```c // 示例:用标准函数取代部分 ieee_fp 功能 #include <math.h> double result = sqrt(16); // 替代原本可能调用的浮点运算宏 ``` ---
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值