首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >意思是-sysroot=$SDKTARGETSYSROOT?

意思是-sysroot=$SDKTARGETSYSROOT?
EN

Stack Overflow用户
提问于 2022-02-12 15:19:38
回答 1查看 469关注 0票数 0

HAve一些非常令人费解的东西(或者对我来说听起来很奇怪)。希望你们能给我更清楚的解释

已经交叉编译一个文件使用环境安装-文件(环境-安装-aarch64-poky-linux)从Yocto分发为一个arm。我理解它是设置环境(通过使用源环境-安装-文件)

它包含

  • SDKTARGETSYSROOT (我知道它是保存交叉编译代码所需的头文件和库文件的典型的最小目标)
  • PATH (有点像您自己的环境中的路径使用,但与目标有一些不同)

我发现令人困惑的是工具链的位置。它不是应该在SDKTARGETSYSROOT (工具链由其他人设置,SDKTARGETSYSROOT= /opt/fsl-imx-xwayland/4.14-sumo/environment-setup-aarch64-poky-linux )中找到吗?我发现我的aarch64-poky-linux-gcc是在SDKTARGETSYSROOT目录之外的目录中找到的(尽管gcc在PATH,/opt/fsl-imx-xwayland/4.14-sumo/sysroots/x86_64-pokysdk-linux/usr/bin/aarch64-poky-linux中找到)

是否有理由这样做?我一直在编码代码,但想知道为什么会这样?

谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-02-12 18:15:36

这需要使用交叉加拿大编译器(这里是GCC),而不是Yocto,Yocto使用传递给GCC:https://gcc.gnu.org/onlinedocs/gcc/Directory-Options.htmlhttps://gcc.gnu.org/onlinedocs/gcc/Directory-Options.html参数连接它的编译器逻辑。

这告诉GCC将传递给--sysroot的内容当作目标上典型编译的sysroot来处理,例如GCC通常希望在/usr/lib中找到/usr/include或库中的标头,如果我们通过--sysroot=/foo/,它将自动分别查看/foo/usr/include/foo/usr/lib

Yocto中的工具链脚本使用--sysroot=SDKTARGETSYSROOT传递安装SDK的目录,因此它找到了能够从SDK交叉编译的适当的头和库,以获得更多信息:https://git.yoctoproject.org/poky/tree/meta/classes/toolchain-scripts.bbclass

现在为什么GCC在那个目录之外呢?因为该目录只包含目标体系结构的文件(因此,SDKTARGETSYSROOTSDK:对于SDK,TARGET:用于目标arch,SYSROOT:要使用的sysroot ),GCC不是。GCC是编译后在您的主机上运行的,因此它不属于这个目录,这就是为什么您看到根路径的x86_64-pokysdk-linux部分,GCC实际上安装在其中,您的主机三胞胎是64位x86体系结构,它是由poky (Yocto)构建的SDK,它的操作系统是Linux。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71093162

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档