Vitis AI 编译dnndk应用

Vitis AI与DNNDK:从编译到执行AI应用
本文详细介绍了如何在Vitis AI库中编译DNNDK AI应用,包括DNNDK API与VART API的区别、安装交叉编译环境、模型的编译和应用修改,以及最后在自定义单板上执行AI应用的步骤。通过这些步骤,读者可以学习到Vitis AI在实际应用中的流程。

在Vitis AI library中的模型在自定义单板使用中,介绍了如何进行模型库编译,下一步要将模型加入到AI应用中进行编译,生成可执行文件.

编译DNNDK AI应用

DNNDK API与VART API

DNNDK API:自定义神经网络时使用。

VART(Vitis-AI RunTime) API :使用Xilinx Model Zoo中的模型时使用。

  • 安装交叉编译环境

进入https://github.com/Xilinx/Vitis-AI/tree/v1.2/mpsoc,下载sdk-2020.1.0.0sh。

$mkdir petalinux_sdk
$cd petalinux_sdk
$./sdk-2020.1.0.0.sh
  • 创建环境变量
$source ~/petalinux_sdk/environment-setup-aarch64-xilinx-linux
  • 下载
<think>我们正在使用Vitis开发Linux应用程序,用户询问如何为Linux应用添加编译选项。 根据之前的引用,我们知道在Vitis中创建Linux应用工程的基本步骤。现在需要添加编译选项,这通常在工程的构建设置中完成。 步骤: 1. 在Vitis中打开已有的Linux应用工程(如工程类型为"Xilinx ARM v7/v8 Linux Executable")。 2. 右键点击工程,选择“Properties”(属性)。 3. 在属性对话框中,导航到:C/C++ Build -> Settings 4. 在右侧的工具设置标签页中,我们可以看到不同的工具,包括: - ARM v7/v8 gcc compiler - ARM v7/v8 g++ compiler - ARM v7/v8 linker 5. 对于C语言项目,我们主要关注“ARM v7/v8 gcc compiler”下的选项。 具体操作: - 在“Tool Settings”选项卡中,展开“ARM v7/v8 gcc compiler”: * 在“Directories”中可以添加头文件路径(-I选项) * 在“Optimization”中设置优化级别(-O0, -O1, -O2等) * 在“Warnings”中设置警告选项(-Wall, -Wextra等) * 在“Debugging”中设置调试信息(-g) * 在“Preprocessor”中定义宏(-D) * 在“Miscellaneous”中可以添加其他编译器选项(直接在“Other flags”框中输入) - 同样,链接器选项在“ARM v7/v8 gcc linker”下设置: * 在“Libraries”中添加库(-l)和库路径(-L) * 在“Miscellaneous”中添加其他链接器选项 例如,要添加编译选项“-Wall”和“-O2”,以及链接选项“-lpthread”: 1. 选择“ARM v7/v8 gcc compiler” -> “Warnings”,选择“All warnings (-Wall)” 2. 选择“Optimization”,选择“Optimize more (-O2)” 3. 选择“ARM v7/v8 gcc linker” -> “Libraries”,在“Libraries (-l)”右侧点击“+”号,输入“pthread”(去掉前面的lib和后面的.so,只写库名) 另外,如果有一些特殊的编译选项,可以直接在“Miscellaneous”中的“Other flags”框中添加。 例如:在编译器的“Other flags”框中输入“-fopenmp”,在链接器的“Other flags”框中同样输入“-fopenmp”。 注意:这些设置是针对当前工程的,并且会反映在Makefile中。Vitis在构建时会使用这些选项。 如果用户需要设置条件编译的宏,比如定义宏“DEBUG”,则: 在“Preprocessor”中,在“Defined symbols (-D)”右侧点击“+”号,输入“DEBUG”(不需要-D,直接输入宏名)。如果需要定义值,可以输入“NAME=value”。 最后,点击“Apply and Close”保存设置。 示例步骤(以添加-pthread选项为例): 1. 右键工程 -> Properties 2. C/C++ Build -> Settings 3. 选择“ARM v7/v8 gcc compiler” -> “Miscellaneous” 4. 在“Other flags”中添加“-pthread”(注意:也可以按照前面提到的方法在链接器的Libraries中添加-pthread,但使用-pthread编译器选项更全面,因为它还会定义必要的宏) 5. 同样,在“ARM v7/v8 gcc linker” -> “Miscellaneous”的“Other flags”中也添加“-pthread”(实际上,对于gcc,通常只需要在编译时添加-pthread,链接时会自动链接库,但为了确保,有时在链接时也加。但更规范的做法是只在编译选项加-pthread,因为-pthread会传递给链接器) 注意:对于多线程程序,推荐使用-pthread而不是-lpthread,因为-pthread会确保正确的编译和链接,并且定义_REENTRANT等宏。 引用[1][2][3]中提到了创建工程的过程,但没有具体说明如何添加编译选项。上述方法是基于Vitis的工程属性设置。 因此,我们可以这样总结: </think>在 Vitis 中为 Linux 应用程序添加编译选项,需通过工程属性设置进行操作。以下是详细步骤: ### 添加编译选项的步骤 1. **打开工程属性** - 在 **Project Explorer** 窗口中右键点击目标工程 - 选择 **Properties** → **C/C++ Build** → **Settings** 2. **配置编译器选项** 在 **Tool Settings** 选项卡中: - 展开 **ARM v7/v8 gcc compiler** ```mermaid graph LR A[ARM gcc compiler] --> B[Optimization] A --> C[Preprocessor] A --> D[Debugging] A --> E[Miscellaneous] ``` - 常用配置区域: - **Optimization**:设置优化级别(如 `-O2`) - **Preprocessor**:添加宏定义(如 `-DDEBUG`) - **Debugging**:生成调试信息(`-g`) - **Miscellaneous**:在 **Other flags** 中添加自定义选项(如 `-Wall`) 3. **配置链接器选项** - 展开 **ARM v7/v8 gcc linker** - **Libraries** 标签页: - 添加库名称(如 `pthread` → `-lpthread`) - 添加库路径(如 `/usr/local/lib` → `-L/usr/local/lib`) - **Miscellaneous**: - 在 **Linker flags** 中添加自定义链接选项(如 `-static`) 4. **应用设置** - 点击 **Apply and Close** 保存配置 - 重新编译工程使设置生效(右键工程 → **Build Project**) ### 示例场景 为多线程程序添加支持: 1. 在 **ARM gcc compiler** → **Miscellaneous** → **Other flags** 添加: ``` -pthread ``` 2. 在 **ARM gcc linker** → **Libraries** 添加: ``` pthread ``` 这将自动生成 `-lpthread` 链接指令[^1][^3]。 ### 验证编译选项 编译后查看 **Console** 窗口中的实际命令: ```bash arm-linux-gnueabihf-gcc -O2 -Wall -pthread -I../include ... arm-linux-gnueabihf-gcc -lpthread -L../lib -o app ... ``` > ⚠️ **注意** > - 裸机工程(Baremetal)需改用 **Xilinx Tools** 下的编译器设置 > - Linux 应用必须选择 **Xilinx ARM v7/v8 Linux Executable** 工程类型[^1][^3] > - 选项 `-pthread` 比 `-lpthread` 更推荐,因它同时启用线程安全宏[^2]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

硬码农二毛哥

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值