make application: Compiling the Host Application - make application: Compiling the Host Application - 2025.2 English - XD100

Vitis Tutorials: AI Engine Development (XD100)

Document ID
XD100
Release Date
2026-03-27
Version
2025.2 English

You can compile the host application by following the typical cross-compilation flow for the Cortex A72. To build the application, run the following command (default TARGET=hw_emu, GEMM_INSTS=1, GEMM_SIZE=32, ITER_CNT=1 and EN_TRACE=0):

make application

or,

application: graph $(BUILD_TARGET_DIR)/$(APP_ELF)

REG_GCC_FLAGS := $(GCC_FLAGS)
REG_GCC_FLAGS += -DITER_CNT=$(ITER_CNT)
REG_GCC_FLAGS += -DGRAPH_ITER_CNT=$(GRAPH_ITER_CNT)

$(BUILD_TARGET_DIR)/$(APP_ELF): $(HOST_APP_SRC)/* $(LIBADF_A)
	@rm -rf $(BUILD_TARGET_DIR)/app_control.o $(BUILD_TARGET_DIR)/gemm_aie_app.o $(BUILD_TARGET_DIR)/$(APP_ELF)
	$(CXX) $(REG_GCC_FLAGS) $(GCC_INC_FLAGS) $(AIE_CONTROL_CPP) -o $(BUILD_TARGET_DIR)/app_control.o
	$(CXX) $(REG_GCC_FLAGS) $(GCC_INC_FLAGS) $(APP_SRC_CPP) -o $(BUILD_TARGET_DIR)/gemm_aie_app.o $(GCC_INC_LIB) $(GCC_LIB)
	$(CXX) $(BUILD_TARGET_DIR)/app_control.o $(BUILD_TARGET_DIR)/gemm_aie_app.o $(GCC_INC_LIB) $(GCC_LIB) -o $(BUILD_TARGET_DIR)/$(APP_ELF)

Refer to this page for XRT documentation. Refer to this page for details of host application programming.

Switch

Description

-O | Optimize.

Optimizing compilation takes more time and a lot more memory for a large function. With -O, the compiler tries to reduce code size and execution time, without performing any of the optimizations that can take a great deal of compilation time.

-D__linux__

-DXAIE_DEBUG

Enable debug interface capabilities where certain core status, event status, or stack trace can be dumped.

-D<Pre-processor Macro String>=<value>

Pass pre-processor macro definitions to the cross-compiler.

-I <dir>

Add the directory dir to the list of directories to be searched for header files.

-o <file>

Place output in file <file>. This applies to any output type, including executable files, object files, assembly language files, or preprocessed C code.

–sysroot=<dir>

Use dir as the logical root directory for headers and libraries. For example, if the compiler normally searches for headers in /usr/include and libraries in /usr/lib, it instead searches dir/usr/include and dir/usr/lib. The env_setup.sh script automatically sets this option.

-l<library>

Search the library named library when linking. The GeMM tutorial requires the adf_api_xrt and xrt_coreutil libraries.

-L <dir>

Add directory <dir> to the list of directories to be searched for -l.

The following is a description of the input sources compiled by the AI Engine compiler command.

Inputs Sources

Description

$(HOST_APP_SRC_REPO)/gemm_aie_app.cpp

Source application file for the gemm_aie_xrt.elf that runs on an A72 processor.

$(BUILD_TARGET_DIR)/Work/ps/c_rts/aie_control_xrt.cpp

This is the AI Engine control code generated implementing the graph APIs for the GeMM graph.

The following is a description of the output objects that results from executing the AI Engine compiler command with the above inputs and options.

Output Objects

Description

$(BUILD_TARGET_DIR)/gemm_aie_xrt.elf

The executable that runs on an A72 processor.