Install and run applications through Smart on target

smart has been deprecated from 2018.1, and dnf is the new package manager 

Table of Contents

Smart is a package manager that manages software upgrades and installation. Smart has been developed with modularity and flexibility in mind. It is completely backend-based and package-manager-agnostic.

Updating packages on target using smart is experimental as of now


  • ZCU102 pre-built images from here(Use the latest release).
  • Target board should have an internet connection.
  • Verify channels by running smart channel --show
Output of "smart channel --show"
  • Update package list by running "smart update"
  • Run smart query <package_name> to search for a specific package's availability.

  1. If you are running out of pre-built image, then there is a limit on the rootfs size(limited by the device RAM) as rootfs is on RAM. Depending on the device RAM, you may not be able to install many packages and you will end up seeing errors for low disk space

  1. When installing packages, always install packagegroups over single packages when available. For example:
    1. To run qt, install packagegroup-petalinux-qt instead of qtbase.
    2. To run GCC, install packagegroup-core-sdk instead of GCC
  2. packagegroup-petalinux-xen and packagegroup-petalinux-openamp will not work and should not be installed.

As an example consider how to install Qt and run it.

Qt installation

We need to install packagegroup-petalinux-x11 and packagegroup-petalinux-qt to run qt applications on target.
  1. smart install packagegroup-petalinux-x11
  2. smart install packagegroup-petalinux-qt

Qt testing

  • Set DISPLAY: The DISPLAY environment variable is required to communicate with X11.
    • export DISPLAY=:0.0
  • Set QPA backend to eglfs
    • export QT_QPA_PLATFORM=eglfs
    • export QT_QPA_EGLFS_INTEGRATION=eglfs_x11
  • You can now run qt example applications.
    • /usr/share/qt5/examples/opengl/cube/cube
  • If you see dual mouse pointers while testing, export QT_QPA_EGLFS_HIDECURSOR=1 to hide one cursor and restart your application.

Related Links

© Copyright 2019 - 2022 Xilinx Inc. Privacy Policy