Setup Cross Compilation

3 minute read

Set-up Cross Compilation (In Clion)

For cross compilation you use … (with remote device libraries).

Install Motorcortex toolchain on your system

For Cross compilation you will need a Motorcortex SDK you can download the SDK (Software Developement Kit) from the motorcortex.io store by pressing the download button below.

  1. Extract the archive and place the .sh file in a folder of your preference.

  2. In the terminal browse to the folder and run the .sh file from the terminal, for example:

   sh ./motorcortex-glibc-x86_64-motorcorcortex-image-dev-corei7-64-toolchain-X.X.X.sh
  1. You will be asked to enter the target directory where to install the SDK to. It is a good idea to keep the SDK in the home folder, where administrative rights are not required for example:
   ~/mcx-sdk

Mounting Sysroot on your system

The first step to Cross Compilation is to mount a Sysroot directory to your system that is used for cross-compilation. A `Sysroot is a directory which is considered to be the root directory for the purpose of locating headers and libraries of your application.

  1. Generate a new key pair with the following command.
   ssh-keygen -t rsa

  1. Use ssh-copy-id to provide a temporary access without a password to the remote Motorcortex host. If you are asked to fill in a password use vectioneer.
   ssh-copy-id admin@192.168.2.100

  1. Create a folder to mount the remote Motorcortex file system on with the following command.
   mkdir ~/mcx-sysroot
  1. Ensure that sshfs is installed with the following command:
   sudo apt-get install sshfs
  1. Mount the Motorcortex file system with the following command:
   sshfs admin@192.168.2.100:/ ~/mcx-sysroot/

Configure toolchain in clion.

Configure the compiler paths to use the Motorcortex cross-compilation toolchain.

  1. Open File → Settings → Build Execution Deployment → Toolchains.

  2. Create a new System Toolchain with the name motorcortex.

  3. Fill in Make, C Compiler and C++ Compiler paths to point the Motorcortex SDK as shown below.

  • Make:
   /home/ubuntu/mcx-sdk/sysroots/x86_64-pokysdk-linux/usr/bin/make
  • C Compiler:
   /home/ubuntu/mcx-sdk/sysroots/x86_64-pokysdk-linux/usr/bin/x86_64-poky-linux/x86_64-poky-linux-gcc
  • C++ Compiler
   /home/ubuntu/mcx-sdk/sysroots/x86_64-pokysdk-linux/usr/bin/x86_64-poky-linux/x86_64-poky-linux-g++

  1. Press Apply to save the changes.

Setup toolchain plugin

Configure sysroot path to use the headers and libraries from the remote host.

  1. Open File → Settings → Build, Execution, Deployment → **Motorcortex SDK and fill in the Sysroot path path the mounted folder (mcx-sysroot).
   home/ubuntu/mcx-sysroot

Add deployment connection to remote host (IS THIS STILL NEEDED IN THE NEW VERSION ALEXEY!!??)

  1. Add the connection to the remote Motorcortex host. Open Tools → Deployment → Configuration, add a new SFTP connection named mcx-host.

  2. select or add ssh configuration.

Press the Test Connection button to make sure that the filled data is correct.

Press the Autodetect button to set the root path. Uncheck the Visible only for this project checkbox make this host visible in all the projects.

press ok

Cross-compiling Motorcortex applications.

edit configurations.

select mcx dingie

save password checkbox

name cross-mcx-example

deployment profile to mxc-host

press ok

  1. In CLion open the project configuration menu.

  1. Click on + and select Motorcortex Remote Application. In the deployment profile field select Motorcortex remote host.

copy config folder

  1. In the Run/Debug configuration select the just created cross-compiled application with CrossDebug/CrossRelease build profile.

  2. Press the hammer button to cross-compile, play to copy and run on the remote Motorcortex host and the bug button to start a remote debug session.

Note if CMake CrossDebug/CrossRelease don’t work remove the “Motorcortex Remote Application” from Run/Debug Configurations and try again

Last modified January 1, 0001