Application development
- An embedded Linux system is just a normal Linux system, with usually a smaller selection of components
- In terms of application development, developing on embedded Linux is exactly the same as developing on a desktop Linux system
- All existing skills can be re-used, without any particular adaptation
- All existing libraries, either third-party or in-house, can be integrated into the embedded Linux system
- Taking into account, of course, the limitation of the embedded systems in terms of performance, storage and memory
Programming language
- The default programming language for system-level application in Linux is usually C
- The C library is already present on your system, nothing to add
- C++ can be used for larger applications
- The C++ library must be added to the system
- Some libraries, including Qt, are developed in C++ so they need the C++ library on the system anyway
- Scripting languages can also be useful for quick application development, web applications or scripts
- But they require an interpreter on the embedded system and have usually higher memory consumption and slightly lower performance
Languages: Python, Perl, Lua, Ada, Fortran, etc.
For many applications, the C library already provides a relatively large set of features
- file and device I/O, networking, threads and synchronization, inter-process communication
- Thoroughly described in the glibc manual, or in any Linux system programming book
- However, the API carries a lot of history and is not necessarily easy to grasp for new comers
- Therefore, using a higher level framework, such as Qt or the Gtk stack, might be a good idea
- These frameworks are not only graphical libraries, their core is separate from the graphical part
- But of course, these libraries have some memory and storage footprint, in the order of a few megabytes
Building your applications
- For simple applications that do not need to be really portable or provide compile-time configuration options, a simple Makefile will be sufficient
- For more complicated applications, or if you want to be able to run your application on a desktop Linux PC and on the target device, using a build system is recommended
- autotools is ancient, complicated but very widely used.
- We recommend to invest in CMake instead: modern, simpler, smaller but growing user base.
- The QT library is a special case, since it comes with its own build system for applications, called qmake.