Skip to content

undefined reference errors on native XRT API calls #434

@Heng-Zhou

Description

@Heng-Zhou

Environment:

  • Xilinx Alveo U200 Data Center FPGA Acceleration card
  • Ubuntu 22.04.4 LTS
  • Vitis Unified IDE 2023.2
  • gcc version 11.4.0, installed from "sudo apt install build-essential"
  • Project: Vitis-Tutorials/Getting_Started/Vitis, Part 4: Build and Run with the Vitis unified IDE. link.

Problem: At step 6 of "Creating the Application Component" section, when I click "Build" command to build the host application, I got the following error messages:

-- Build files have been written to: /home/zhou/Vitis-Tutorials/Getting_Started/Vitis/example/workVADD/host/build
/tools/Xilinx/Vitis/2023.2/tps/lnx64/cmake-3.24.2/bin/cmake -S/home/zhou/Vitis-Tutorials/Getting_Started/Vitis/example/workVADD/host -B/home/zhou/Vitis-Tutorials/Getting_Started/Vitis/example/workVADD/host/build --check-build-system CMakeFiles/Makefile.cmake 0
/tools/Xilinx/Vitis/2023.2/tps/lnx64/cmake-3.24.2/bin/cmake -E cmake_progress_start /home/zhou/Vitis-Tutorials/Getting_Started/Vitis/example/workVADD/host/build/CMakeFiles /home/zhou/Vitis-Tutorials/Getting_Started/Vitis/example/workVADD/host/build//CMakeFiles/progress.marks
/usr/bin/gmake  -f CMakeFiles/Makefile2 all
gmake[1]: Entering directory '/home/zhou/Vitis-Tutorials/Getting_Started/Vitis/example/workVADD/host/build'
/usr/bin/gmake  -f CMakeFiles/host.dir/build.make CMakeFiles/host.dir/depend
/usr/bin/gmake  -f CMakeFiles/GenerateEmulationConfig.dir/build.make CMakeFiles/GenerateEmulationConfig.dir/depend
gmake[2]: Entering directory '/home/zhou/Vitis-Tutorials/Getting_Started/Vitis/example/workVADD/host/build'
cd /home/zhou/Vitis-Tutorials/Getting_Started/Vitis/example/workVADD/host/build && /tools/Xilinx/Vitis/2023.2/tps/lnx64/cmake-3.24.2/bin/cmake -E cmake_depends "Unix Makefiles" /home/zhou/Vitis-Tutorials/Getting_Started/Vitis/example/workVADD/host /home/zhou/Vitis-Tutorials/Getting_Started/Vitis/example/workVADD/host /home/zhou/Vitis-Tutorials/Getting_Started/Vitis/example/workVADD/host/build /home/zhou/Vitis-Tutorials/Getting_Started/Vitis/example/workVADD/host/build /home/zhou/Vitis-Tutorials/Getting_Started/Vitis/example/workVADD/host/build/CMakeFiles/GenerateEmulationConfig.dir/DependInfo.cmake --color=
gmake[2]: Entering directory '/home/zhou/Vitis-Tutorials/Getting_Started/Vitis/example/workVADD/host/build'
cd /home/zhou/Vitis-Tutorials/Getting_Started/Vitis/example/workVADD/host/build && /tools/Xilinx/Vitis/2023.2/tps/lnx64/cmake-3.24.2/bin/cmake -E cmake_depends "Unix Makefiles" /home/zhou/Vitis-Tutorials/Getting_Started/Vitis/example/workVADD/host /home/zhou/Vitis-Tutorials/Getting_Started/Vitis/example/workVADD/host /home/zhou/Vitis-Tutorials/Getting_Started/Vitis/example/workVADD/host/build /home/zhou/Vitis-Tutorials/Getting_Started/Vitis/example/workVADD/host/build /home/zhou/Vitis-Tutorials/Getting_Started/Vitis/example/workVADD/host/build/CMakeFiles/host.dir/DependInfo.cmake --color=
gmake[2]: Leaving directory '/home/zhou/Vitis-Tutorials/Getting_Started/Vitis/example/workVADD/host/build'
/usr/bin/gmake  -f CMakeFiles/GenerateEmulationConfig.dir/build.make CMakeFiles/GenerateEmulationConfig.dir/build
gmake[2]: Leaving directory '/home/zhou/Vitis-Tutorials/Getting_Started/Vitis/example/workVADD/host/build'
/usr/bin/gmake  -f CMakeFiles/host.dir/build.make CMakeFiles/host.dir/build
gmake[2]: Entering directory '/home/zhou/Vitis-Tutorials/Getting_Started/Vitis/example/workVADD/host/build'
gmake[2]: Entering directory '/home/zhou/Vitis-Tutorials/Getting_Started/Vitis/example/workVADD/host/build'
[ 33%] Generating emconfig.json
/tools/Xilinx/Vitis/2023.2/bin/emconfigutil --od . --nd 1 --platform /opt/xilinx/platforms/xilinx_u200_gen3x16_xdma_2_202110_1/xilinx_u200_gen3x16_xdma_2_202110_1.xpfm
[ 66%] Building CXX object CMakeFiles/host.dir/host.cpp.o
/usr/bin/g++ -DVITIS_MAJOR_VERSION=2023 -DVITIS_MINOR_VERSION=2 -DVITIS_VERSION=2023.2 -D_GLIBCXX_USE_CXX11_ABI=0 -D__USE_XOPEN2K8 -I/tools/Xilinx/Vitis_HLS/2023.2/include -I/opt/xilinx/xrt/include -g -std=c++14 -MD -MT CMakeFiles/host.dir/host.cpp.o -MF CMakeFiles/host.dir/host.cpp.o.d -o CMakeFiles/host.dir/host.cpp.o -c /home/zhou/Vitis-Tutorials/Getting_Started/Vitis/example/workVADD/host/host.cpp
[100%] Linking CXX executable host
/tools/Xilinx/Vitis/2023.2/tps/lnx64/cmake-3.24.2/bin/cmake -E cmake_link_script CMakeFiles/host.dir/link.txt --verbose=true
/usr/bin/g++ CMakeFiles/host.dir/host.cpp.o -o host   -L/opt/xilinx/xrt/lib  -Wl,-rpath,:/opt/xilinx/xrt/lib:/tools/Xilinx/Vitis_HLS/2023.2/lnx64/tools/fpo_v7_1 /opt/xilinx/xrt/lib/libxilinxopencl.so -lpthread -lrt -lstdc++ 
/usr/bin/ld: CMakeFiles/host.dir/host.cpp.o: in function `main':
/home/zhou/Vitis-Tutorials/Getting_Started/Vitis/example/workVADD/host/host.cpp:32: undefined reference to `xrt::device::load_xclbin(std::string const&)'
/usr/bin/ld: /home/zhou/Vitis-Tutorials/Getting_Started/Vitis/example/workVADD/host/host.cpp:37: undefined reference to `xrt::kernel::kernel(xrt::device const&, xrt::uuid const&, std::string const&, xrt::kernel::cu_access_mode)'
/usr/bin/ld: /home/zhou/Vitis-Tutorials/Getting_Started/Vitis/example/workVADD/host/host.cpp:40: undefined reference to `xrt::kernel::group_id(int) const'
... ...
[ERROR] collect2: error: ld returned 1 exit status
 gmake[2]: *** [CMakeFiles/host.dir/build.make:98: host] Error 1
 gmake[2]: Leaving directory '/home/zhou/Vitis-Tutorials/Getting_Started/Vitis/example/workVADD/host/build'
 gmake[1]: *** [CMakeFiles/Makefile2:85: CMakeFiles/host.dir/all] Error 2
 gmake[1]: *** Waiting for unfinished jobs....

I followed this solution in which it says _GLIBCXX_USE_CXX11_ABI=0 compiler flag could solve the issue. But it does not work.

I checked by executing the commands above one by one, and the "undefined reference errors on native XRT API calls" issue occurs when executing /usr/bin/gmake -f CMakeFiles/host.dir/build.make CMakeFiles/host.dir/build. Then I checked flags file /home/zhou/Vitis-Tutorials/Getting_Started/Vitis/example/workVADD/host/build/CMakeFiles/host.dir/flags.make, and found that the -D_GLIBCXX_USE_CXX11_ABI=0 flag is indeed included in the CXX_DEFINES variable. But it just doesn't work. The gcc is installed from official Ubuntu repository so it should be a standard version, so I think the solution does not apply; there should be some other causes for the "undefined reference" issue.

So, how to solve this issue?

Metadata

Metadata

Labels

No labels
No labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions