i.MX 8 Hello World Linux - ArmV7a 32-bit and ArmV8a 64-bit

Document created by Curtis Wald Employee on Jul 17, 2018Last modified by Curtis Wald Employee on Jul 17, 2018
Version 2Show Document
  • View in full screen mode

NXP i.MX 8 series of application processors support running ArmV8a 64-bit and ArmV7a 32-bit user space programs.  A Hello World program that prints the size of a long int is cross-compiled as 32-bit and as 64-bit from an Ubuntu host and then each is copied to MCIMX8MQ-EVK and run.




Source Code:

Create a file with contents below using your favorite editor, example name hello-sizeInt.c.

#include <stdio.h>

int main (int argc, char **argv)
printf ("Hello World, size of long int: %zd\n", sizeof (long int));
return 0;


Ubuntu host packages:

$ sudo apt-get install -y gcc-arm-linux-gnueabihf
$ sudo apt-get install -y gcc-aarch64-linux-gnu

Line 1 installs the ArmV7a cross-compile tools: arm-linux-gnueabihf-gcc is used to cross compile on Ubuntu host

Line 2 install the ArmV8a cross-compile tools: aarch64-linux-gnu-gcc is used to cross compile on Ubuntu host


Create Linux User Space Applications

Build each application and use the static option to gcc to include run time libraries.


Build ArmV7a 32-bit application:

$ arm-linux-gnueabihf-gcc -static hello-sizeInt.c -o hello-armv7a-static


Build ArmV8a 64-bit application:

$ aarch64-linux-gnu-gcc -static  hello-sizeInt.c -o hello-armv8a-static


Copy Hello applications from Ubuntu host and run on MCIMX8MQ-EVK


Using a SDCARD written with images from L4.9.88_2.0.0 Linux release (see resources for image link), power on EVK with Ethernet connected to network and Serial Console port which was connected to a windows 10 PC. Launched a terminal client (TeraTerm) to access console port. Login credentials: root and no password needed. Since Ethernet was connected a DHCP IP address was acquired, on the EVK.  On the Ubuntu host, secure copy the hello applications to EVK:

$ scp hello-armv7a-static root@
hello-armv7a-static                           100%  389KB   4.0MB/s   00:00   

$ scp hello-armv8a-static root@
hello-armv8a-static                           100%  605KB   4.7MB/s   00:00



root@imx8mqevk:~# ./hello-armv8a-static
Hello World, sizeof long int: 8
root@imx8mqevk:~# ./hello-armv7a-static
Hello World, sizeof long int: 4