首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >交叉编译的Linux的头文件路径

交叉编译的Linux的头文件路径

作者头像
用户9736681
发布2023-02-20 16:34:30
9.9K0
发布2023-02-20 16:34:30
举报
文章被收录于专栏:嵌入式随笔嵌入式随笔

我们交叉编译Linux的时候可能需要添加新的头文件,这个头文件放在哪里。编译应用程序和内核程序不太一样,分别说。

编译应用程序

编译器需要找到头文件有几种办法

编译时-I指定路径搜索

arm-linux-gnueabihf-gcc testtty1.c -o testtty1  -I/linux

上述例子中的头文件存于根目录下的linux文件中,指定路径。

设置环境变量C_INCLUDE_PATH(不太常用)

C_INCLUDE_PATH=/.....(具体路径)export C_INCLUDE_PATH

就和设置交叉编译工具链方式一样

默认路径

头文件分两种#include <>和#include ""。#include <>使用的是默认交叉编译环境路径,#include ""默认使用的是当前路径。

可以通过命令搜索

echo 'main(){}'|arm-linux-gnueabihf-gcc -E -v -

其中arm-linux-gnueabihf-gcc取决于你自己使用交叉编译工具(需要根据交叉编译工具进行更改),结果中有以下部分:

#include "..." search starts here:#include <...> search starts here: /opt/pkg/petalinux/2018.3/tools/linux-i386/gcc-arm-linux-gnueabi/bin/../lib/gcc/arm-linux-gnueabihf/7.3.1/include /opt/pkg/petalinux/2018.3/tools/linux-i386/gcc-arm-linux-gnueabi/bin/../lib/gcc/arm-linux-gnueabihf/7.3.1/include-fixed /opt/pkg/petalinux/2018.3/tools/linux-i386/gcc-arm-linux-gnueabi/bin/../lib/gcc/arm-linux-gnueabihf/7.3.1/../../../../arm-linux-gnueabihf/include /opt/pkg/petalinux/2018.3/tools/linux-i386/gcc-arm-linux-gnueabi/bin/../arm-linux-gnueabihf/libc/usr/include

这是我的交叉编译链默认头文件位置,如果要使用自己的#include <>文件,将头文件放入上述位置即可。

编译内核程序

内核编译是在需要内核的路径,所用使用上述默认路径。#include <>使用的是内核默认路径。#include ""默认使用的是当前路径,当前目录下找不到会再去内核默认路径找的。

这个默认路径在顶层Makefile中可以看到

# Use USERINCLUDE when you must reference the UAPI directories only.USERINCLUDE    := \		-I$(srctree)/arch/$(hdr-arch)/include/uapi \		-I$(objtree)/arch/$(hdr-arch)/include/generated/uapi \		-I$(srctree)/include/uapi \		-I$(objtree)/include/generated/uapi \                -include $(srctree)/include/linux/kconfig.h
# Use LINUXINCLUDE when you must reference the include/ directory.# Needed to be compatible with the O= optionLINUXINCLUDE    := \		-I$(srctree)/arch/$(hdr-arch)/include \		-I$(objtree)/arch/$(hdr-arch)/include/generated \		$(if $(KBUILD_SRC), -I$(srctree)/include) \		-I$(objtree)/include \		$(USERINCLUDE)

可以将头文件放入以上的路径,或者更改此Makefile增加文件路径(不建议)。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2022-12-24,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 嵌入式随笔 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 编译应用程序
    • 编译时-I指定路径搜索
      • 设置环境变量C_INCLUDE_PATH(不太常用)
        • 默认路径
        • 编译内核程序
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档