Skip to content

Instantly share code, notes, and snippets.

@mb00g
Last active October 14, 2020 08:49
Show Gist options
  • Save mb00g/7522b8e7a6159b246ed5222aa6d8690c to your computer and use it in GitHub Desktop.
Save mb00g/7522b8e7a6159b246ed5222aa6d8690c to your computer and use it in GitHub Desktop.

Sample toolchain file for building for ARM from an Ubuntu Linux system. Typical usage:

  • install cross compiler: sudo apt-get install gcc-arm-linux-gnueabi
  • cd build
  • cmake -DCMAKE_TOOLCHAIN_FILE=~/Toolchain-Ubuntu-gnueabi.cmake ..

cat ~/Toolchain-Ubuntu-gnueabi.cmake

set(CMAKE_SYSTEM_NAME Linux)
set(TOOLCHAIN_PREFIX arm-linux-gnueabi)

# cross compilers to use for C and C++
set(CMAKE_C_COMPILER ${TOOLCHAIN_PREFIX}-gcc)
set(CMAKE_CXX_COMPILER ${TOOLCHAIN_PREFIX}-g++)

# target environment on the build host system
#   set 1st to dir with the cross compiler's C/C++ headers/libs
set(CMAKE_FIND_ROOT_PATH /usr/${TOOLCHAIN_PREFIX})

# modify default behavior of FIND_XXX() commands to
# search for headers/libs in the target environment and
# search for programs in the build host environment
set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
cmake -DCMAKE_TOOLCHAIN_FILE=~/Toolchain-Ubuntu-gnueabi.cmake \
  -D CMAKE_BUILD_TYPE=RELEASE \
  -D CMAKE_INSTALL_PREFIX=/usr/local \
  -D OPENCV_ENABLE_NONFREE=ON \
  -D ENABLE_FAST_MATH=1 \
  -D CUDA_FAST_MATH=1 \
  -D CUDA_ARCH_BIN=7.0 \
  -D WITH_CUBLAS=1 \
  -D OPENCV_EXTRA_MODULES_PATH=~/opencv_contrib/modules ../
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment