Building simple C program
From SomLabs Wiki
Building simple C program
Contents
On target system
One of few ways to create applications is to connect to target board via UART-USB converter or SSH client, use a text editor (for example nano) to write code and compile them with gcc. To do that install compiler and some additional software:
root@somlabs:~# apt install build-essential
Now create your program file with nano editor:
root@somlabs:~# nano HelloWorld.c
Enter the code below to the file:
#include <stdio.h> int main() { printf("Hello world!\n"); return 0; }
Save the file (Ctrl+O) and exit (Ctrl+X). Now you can compile and run your program:
root@somlabs:~# gcc -o HelloWorld HelloWorld.c root@somlabs:~# ./HelloWorld Hello world! root@somlabs:~#
On Linux host
Other method is to write your application on host system. In this case Ubuntu 18.04 will be used with the Linaro toolchain.
Download and extract the toolchain:
wget https://releases.linaro.org/components/toolchain/binaries/7.4-2019.02/arm-linux-gnueabihf/gcc-linaro-7.4.1-2019.02-x86_64_arm-linux-gnueabihf.tar.xz tar -xf gcc-linaro-7.4.1-2019.02-x86_64_arm-linux-gnueabihf.tar.xz
Export the path to the compiler:
export PATH=$PATH:<KERNEL_PATCH_PATH>/gcc-linaro-7.4.1-2019.02-x86_64_arm-linux-gnueabihf/bin
Now you are ready to create basic application on your host, first steps are just like in case of development on target, but you need to perform them on your host: Create your program file with nano editor:
nano HelloWorld.c
Enter the code below to the file:
#include <stdio.h> int main() { printf("Hello world!\n"); return 0; }
Save the file (Ctrl+O) and exit (Ctrl+X). Now you can compile and run your program:
arm-linux-gnueabihf-gcc -o HelloWorld HelloWorld.c
The created executable can be run only on ARM architecture - it can be verified by calling the command:
file HelloWorld
The output contains the details about the binary:
HelloWorld: ELF 32-bit LSB executable, ARM, EABI5 version 1 (SYSV), dynamically linked, interpreter /lib/ld-, for GNU/Linux 3.2.0, BuildID[sha1]=f34ae20591d1c22fdcfcaa8f6aee9568f9b250e4, with debug_info, not stripped
Now it is time to upload executable file to the target (you need to find it's IP before, for example by running ip a command on target and allow access to the target using ssh protocol):
scp HelloWorld root@192.168.0.53:/root
Now your executable should be in /root directory of the target system, you can run it (enter the command below on target):
root@somlabs:~# ./HelloWorld Hello world! root@somlabs:~#