为 x86 执行编译和链接 - 2022.1 简体中文

Vitis 统一软件平台文档 应用加速开发 (UG1393)

Document ID
UG1393
Release Date
2022-05-25
Version
2022.1 简体中文
提示: 运行工具前,请按 设置 Vitis 环境 中所述方式设置命令 shell 或窗口。
使用 g++ 编译器将主机应用的每个源文件都编译到对象文件 (.o) 中。
g++ ... -c <source_file1> <source_file2> ... <source_fileN>
生成的对象文件 (.o) 与赛灵思的 Xilinx Runtime (XRT) 共享库相链接以创建可执行的主机程序。使用 -l 选项执行链接。
g++ ... -l <object_file1.o> ... <object_fileN.o>

为 x86 执行编译和链接遵循标准 g++ 流程。唯一要求是包含 XRT 头文件,并链接 XRT 共享库。

您可使用赛灵思的 Xilinx Runtime (XRT) 本机 C++ API 或业界标准的 OpenCL™ API 以本机 C++ 来编写主机应用。所需的 include 文件和库视您的主机应用使用的 API 以及主机代码的任意具体要求而定。

要使用此 XRT 本机 API,主机应用必须与 xrt_coreutil 库相链接。命令行使用另一组不同设置(如下示例所示)来组合编译和链接进程:

g++ -g -std=c++14 -I$XILINX_XRT/include -L$XILINX_XRT/lib -o host.exe host.cpp \
-lxrt_coreutil -pthread

编译源代码时,需以下 g++ 选项:

  • -I$XILINX_XRT/include/:XRT 的 include 目录。
  • -std=c++14:定义 C++ 语言标准。使用 XRT 本机 C++ API 编译主机代码需要 C++ 标准和 -std=c++14 或更高版本。但是,在早于 4.9.0 的 GCC 版本上,请改为使用 -std=c++1y

链接可执行文件时,需以下 g++ 选项:

  • -L$XILINX_XRT/lib/:在 XRT 库中查找。
  • -lxrt_coreutil:在链接期间搜索指定的库。
  • -pthread:在链接期间搜索指定的库。

构建 OpenCL API 主机代码

Vitis 应用加速开发流程还支持使用 OpenCL API 来对主机应用进行编程。使用 g++ 构建 OpenCL 应用的过程使用下列命令行:
g++ -g -std=c++1y -I$XILINX_XRT/include -L$XILINX_XRT/lib -o host.exe host.cpp \
-lOpenCL -pthread

唯一区别在于对于 OpenCL API 使用 OpenCL 库,对于 XRT 本机 API 则使用 xrt_coreutil 库。

注释:Vitis Accel_Examples 中,您可以看到其中添加了 xcl2.cpp 源文件和 -I../xcl2 include 语句。这些添加到主机程序的内容和 g++ 命令可提供对代码示例所使用的帮助程序实用工具的访问权,但对于您自己的代码而言,通常并不需要访问这些工具。