我有一个使用stm32cubemx初始化的stm32f103项目,我使用neovim进行编辑,使用arm-none-eabi-gcc编译代码(使用自动生成的makefile)。
我也安装了clangd LSP,也可以生成compile_commands.json
文件。除了有两个错误外,一切正常:
- stdio.h文件未找到
- 编译器为没有FPU的设备生成FPU指令(check __FPU_PRESENT)
我看了core_cm3.h
文件和__FPU_USED
是禁用的,这正是clang说的。
/** __FPU_USED indicates whether an FPU is used or not.
This core does not support an FPU at all
*/
#define __FPU_USED 0U
但是我在我的makefile标志中找不到任何使FPU能够编译的行。
# fpu
# NONE for Cortex-M0/M0+/M3
# float-abi
# mcu
MCU = $(CPU) -mthumb $(FPU) $(FLOAT-ABI)
我也注释掉了$(FPU)
和$(FLOAT-ABI)
,但是错误仍然存在。虽然我可以毫无问题地编译这个项目(因为gcc没有任何抱怨),但是这些错误还是让我有点紧张。
有办法修复这些错误吗?或者是否有任何基于gcc的lsp可以代替clangd?
在neovim的LSP列表中也有ccls,但是我无法安装它。
有办法修复这些错误吗?
https://clangd.llvm.org/config#files可以:
- 创建clangd配置文件
- 指定
-sysroot
命令指定您的构建链(/usr/arm-none-eabi/
在我的系统)的位置 - 和其他需要的选项(
-isysroot
-nostdlib
等),如果你使用它们。
我建议无论如何移动CMake和生成compile_command。json。
是否有任何基于gcc的lsp来代替clangd?
我不知道。