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.

results matching ""

    No results matching ""