嵌入式arm-linux开发应用层第三方库头文件包含问题

🗣️前言

一般来说在本机开发应用linux应用程序,直接安装对应的包就行,但是在嵌入式linux开发过程中,因为架构不同,可能没有相应的包。这里推荐一种标准的开发方法。这种方法可以直接统一使用一个库及其相应的头文件,不会导致各种不匹配。

⚙️解决方法

直接使用buildroot(或者其他根文件系统构建工具)构建根文件系统,他会在buildroot源码根文件夹中的output\host\arm-buildroot-linux-gnueabihf\sysroot\usr\include中生成你选择的库相应的头文件,将这些头文件加进去即可使用。

比如我使用的是vscode+clangd来开发,为了让vscode编辑器能解析头文件包含,需要在项目根目录创建一个.clangd文件(也可使其他方法),写入如下内容

CompileFlags:
  Add: 
    - --target=arm-linux-gnueabihf
    - --sysroot=/home/ydteng/workspace/imx6ull/buildroot/output/host/arm-buildroot-linux-gnueabihf/sysroot

然后为了编译器也能正常识别,也需要加上sysroot选项,这里以libcurl库为例,一条示例编译命令如下

arm-linux-gnueabihf-gcc api_face.c -o curl_test -lcurl --sysroot=/home/ydteng/workspace/imx6ull/buildroot/output/host/arm-buildroot-linux-gnueabihf/sysroot   # 一定要加上-lcurl

🔚结语

 

🗂️引用参考

 

posted @ 2026-01-20 10:59  绿树荫下跑猫猫  阅读(0)  评论(0)    收藏  举报