0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

Vitis嵌入式Linux:Sysroot和库的用法

jf_pJlTbmA9 来源:jf_pJlTbmA9 作者:jf_pJlTbmA9 2023-07-07 14:14 次阅读

以下博文演示了在Vitis™ 中对 Linux 应用程序开发的过程中如何使用外部库。

我将使用由 libxml2 库所提供的“Parse and validate an XML file with an xmlReader”应用示例来演示本示例,并且和基于 ZCU102 开发板的 PetaLinux BSP 编译出来的 Linux 镜像相关联。

创建 Linux 域

要在 Vitis 中开发嵌入式 Linux 应用,需要在工作空间内创建含 Linux 域的平台工程。

此平台工程是根据所选的硬件规格文件 (XSA) 创建的,该文件可以是在 Vivado 中生成的定制 XSA,也可以是 Vitis 内的预定义 XSA 文件。
由于本示例是使用 PetaLinux BSP 构建的,因此用于创建平台的 XSA 文件与用于 PetaLinux 工程的 XSA 文件相同。

此外,目标的启动组件通常在 PetaLinux中生成(或者也可以使用pre-built中的组件),因此无需选中“Generate boot components”(生成启动组件)选项。

100569887-297773-0410-1.png

生成的硬件平台工程提供了基本 Linux 域,其中所有可选设置均未定义。

此工程足以用于开发简单的应用,例如,hello world。

100569887-297774-0410-2.png

以该域为目标的应用将搭配 Vitis IDE 使用预定义的工具链和 sysroot。

编译好的应用程序可能可以在 Linux 镜像上正常运行,不出现任何问题,但还请谨记,也可能因为主机上安装的库/头文件与Linux镜像上的不一致而导致出错。

预安装的系统仅提供一些基本库,因此在编译我们这个示例的时候,因为缺少这些头文件和库,很可能无法编译成功。

100569887-297775-0410-3.png

构建 Linux 库

PetaLinux 提供了根文件系统配置菜单,用于构建库并将其添加到生成的 Linux 镜像或分发版中。如《PetaLinux 工具文档:参考指南》(UG1144) 中所述,此配置为静态菜单,其中提供了赛灵思支持的实用工具和库。

此外,库不支持的配方可从现有/已使用的层次或者从其它层次添加到镜像中。如需获取进一步的指导信息,请参阅 (UG1144) 中的将现有配方添加到根文件系统中部分。

对于此示例,在镜像中添加了包含开发包和调试包在内的 libxml2 库。

100569887-297776-0410-4.png

使用 petalinux-build 命令把库都编译一下。

100569887-297777-0410-5.png

生成目标 sysroot

如 (UG1144) 的SDK 生成部分中所述,PetaLinux 提供了 SDK 生成功能,用于构建和部署交叉编译工具链和目标 sysroot 以供应用开发之用。

100569887-297778-0410-6.png

在默认目录内封装好 sysroot 后,即可在生成的 SDK 文件夹内找到 libxml2 的库和头文件。

100569887-297779-0410-7.png

配置 Linux 域

Vitis 中的 Linux 域配置菜单提供了设置可选 sysroot 目录的选项。完成配置和构建后,sysroot 将复制到平台的导出目录中,以便后续供以 Linux 域为目标的任何应用使用。

此外,创建的应用将自动使用导出的 sysroot 目录。

100569887-297780-0410-8.png

创建 Linux 应用

使用定制 sysroot 配置完 Linux 域,并在 Vitis 中以该 Linux 域为目标创建 Linux 应用工程之后,该应用将自动配置为使用先前导出的 sysroot 路径。

100569887-297781-0410-9.png

以上配置设置将自动填充应用工程的 C/C++ 设置,用来设置编译器的“Include Paths (-I)”(包含路径)选项和 sysroot (--sysroot) 选项以及连接器的库搜索路径 (-L)。由该工具配置的编译器和连接器设置均可在软件平台配置的选项中找到。

有些库文件,例如:libxml2 ,或是include 目录中需要包含的额外的分层文件夹等,要配置额外的搜索路径来查找这些头文件。在此示例中,需将 /usr/include 内的 libxml2 文件夹添加到工程设置中。

100569887-297782-0410-10.png

最后,在工程配置选项中,需通过库选项 (-l) 选中将在应用中使用的所有库。

100569887-297783-0410-11.png

现在 Linux 应用工程已正确配置了所需要的第三方库,因此可成功构建该工程。

100569887-297784-0410-12.png

结论

Vitis IDE 支持以开箱即用方式进行 Linux 应用开发,在此过程中,它会使用预安装的工具链和库以及为您的目标平台而创建的默认 Linux 域。

此外,该域可配置为利用可选 sysroot 文件夹来使用第三方库。该选项能够与 PetaLinux 的 SDK 生成功能完美搭配,以便将该域配置为使用专为 Linux 镜像构建的库,并将这些库部署在目标平台上。

审核编辑:汤梓红

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 嵌入式
    +关注

    关注

    5072

    文章

    19026

    浏览量

    303511
  • Linux
    +关注

    关注

    87

    文章

    11232

    浏览量

    208949
  • SDK
    SDK
    +关注

    关注

    3

    文章

    1029

    浏览量

    45782
  • Vitis
    +关注

    关注

    0

    文章

    145

    浏览量

    7405
收藏 人收藏

    评论

    相关推荐

    Vitis里如何创建嵌入式软件工程

    1. 介绍 Vitis是Xilinx新推出的统一软件平台,可实现在 Xilinx 所有芯片(包括 FPGA、SoC 和 Versal ACAP)上开发嵌入式软件和加速应用。Xilinx主要宣传
    的头像 发表于 11-04 12:03 5498次阅读
    <b class='flag-5'>Vitis</b>里如何创建<b class='flag-5'>嵌入式</b>软件工程

    嵌入式Linux嵌入式Linux开发环境说明

    嵌入式Linux嵌入式Linux开发环境说明
    发表于 03-28 09:49 30次下载

    基于嵌入式Linux的渔探系统

    针对渔探仪发展的现状,提出了一种基于嵌入式Linux 的渔探仪系统. 该系统将图形用户界面构建在嵌入式Linux嵌入式GUI
    发表于 04-24 10:44 22次下载

    嵌入式Linux

    嵌入式Linux随着Linux的迅速发展,嵌入式Linux现在已经有许多的版本,包括强实时的嵌入式
    发表于 06-17 00:36 920次阅读

    嵌入式LINUX开发基础知识

    嵌入式LINUX简介,嵌入式LINUX开发平台简介,嵌入式LINUX开发流程,建立
    发表于 07-31 21:34 261次下载

    嵌入式】基于ARM的嵌入式Linux开发总结

    前言嵌入式知识点复习一嵌入式知识点复习二 --体系结构嵌入式知识点复习三 --ARM-LINUX嵌入式开发环境
    发表于 10-19 18:32 26次下载
    【<b class='flag-5'>嵌入式</b>】基于ARM的<b class='flag-5'>嵌入式</b><b class='flag-5'>Linux</b>开发总结

    嵌入式常用的开源

    阅读目录linux/嵌入式常用开源列表其他资料参考资料linux下/嵌入式常用的开源名字及简
    发表于 10-20 19:20 5次下载
    <b class='flag-5'>嵌入式</b>常用的开源<b class='flag-5'>库</b>

    嵌入式linux开发工具总结

    1.嵌入式linux开发工具-编译器gcc(静态 动态的制作)可以制作 的使用2.
    发表于 11-01 16:32 12次下载
    <b class='flag-5'>嵌入式</b><b class='flag-5'>linux</b>开发工具总结

    嵌入式linux和物联网,嵌入式Linux或RTOS:用于物联网

    嵌入式Linux或RTOS:用于物联网2021-05-10嵌入式Linux或RTOS:用于物联网嵌入式L
    发表于 11-01 16:33 15次下载
    <b class='flag-5'>嵌入式</b><b class='flag-5'>linux</b>和物联网,<b class='flag-5'>嵌入式</b><b class='flag-5'>Linux</b>或RTOS:用于物联网

    嵌入式Linux(基础篇)】从标准Linux嵌入式Linux + 嵌入式Linux知识架构

    主要介绍了GNU/Linux的诞生,标准Linux是如何应用在嵌入式系统中的,最后讲述了嵌入式Linux知识架构。
    发表于 11-02 09:51 34次下载
    【<b class='flag-5'>嵌入式</b><b class='flag-5'>Linux</b>(基础篇)】从标准<b class='flag-5'>Linux</b>到<b class='flag-5'>嵌入式</b><b class='flag-5'>Linux</b> + <b class='flag-5'>嵌入式</b><b class='flag-5'>Linux</b>知识架构

    嵌入式Linux network

    文章目录前言网络通信简介服务器程序客户端程序运行微信公众号前言这是前篇:嵌入式Linux i.MX开发板嵌入式Linux NFS嵌入式
    发表于 11-02 10:51 15次下载
    <b class='flag-5'>嵌入式</b><b class='flag-5'>Linux</b> network

    嵌入式Linux路线

    嵌入式数据或图形软件开发有兴趣,可以进一步学习嵌入式linux数据开发或基于 QT的嵌入式
    发表于 11-02 11:51 18次下载
    <b class='flag-5'>嵌入式</b><b class='flag-5'>Linux</b>路线

    视频教程-嵌入式Linux开发基础-嵌入式

    嵌入式Linux开发基础 嵌入式工程师、嵌入式讲师、10多年
    发表于 11-02 13:21 30次下载
    视频教程-<b class='flag-5'>嵌入式</b><b class='flag-5'>Linux</b>开发基础-<b class='flag-5'>嵌入式</b>

    嵌入式网络编程+嵌入式Linux系统

    嵌入式网络编程+嵌入式Linux系统一、 Linux操作系统安装与使用(命令)二、 Linux开发工具(gcc、gdb、make)三、
    发表于 11-02 14:51 23次下载
    <b class='flag-5'>嵌入式</b>网络编程+<b class='flag-5'>嵌入式</b><b class='flag-5'>Linux</b>系统

    揭秘Vitis嵌入式加速平台的创建

    电子发烧友网站提供《揭秘Vitis嵌入式加速平台的创建.pdf》资料免费下载
    发表于 09-14 11:05 0次下载
    揭秘<b class='flag-5'>Vitis</b><b class='flag-5'>嵌入式</b>加速平台的创建