= Porting Software to HelenOS = This page shall contain a brief guide for porting software (e.g. from GNU/Linux) to HelenOS. Currently, it only contains assorted links to existing resources. == Links == * [BinutilsMaintenance Maintenance instructions for binutils] * [http://vh.alisma.cz/blog/2013/01/24/towards-gcc-for-helenos Blog] [http://vh.alisma.cz/blog/2013/01/27/towards-gcc-for-helenos-2-libgmp posts] [http://vh.alisma.cz/blog/2013/02/13/towards-gcc-for-helenos-3-libmpfr about] [http://vh.alisma.cz/blog/2013/11/06/gcc-for-helenos-sitrep GCC] [http://vh.alisma.cz/blog/2013/11/07/gcc-for-helenos-todo porting] * [https://github.com/vhotspur/coastline Coastline] - scripts for porting POSIX-like software to HelenOS (and some [http://vh.alisma.cz/blog/2013/03/30/introducing-helenos-coastline blog] [http://vh.alisma.cz/blog/2013/12/08/helenos-coastline-updates-status-matrix posts]) * Python porting: [https://github.com/zhalas/helenos-build-python repository] and [http://lists.modry.cz/private/helenos-devel/2013-April/006421.html ML announcement] == POSIX emulation layer == HelenOS is not [wiki:DiffFromUnix another Unix-like OS] and thus it needs an emulation for applications that were written for Unix systems. This emulation is currently in HelenOS provided by `libposix` library that provides implementation of functions that are part of POSIX standard but were considered inappropriate for HelenOS. `libposix` provides an (incomplete) illusion that the application has access to standard POSIX headers and functions. The ported application is then linked with `libposix` which translates the calls to HelenOS specific implementations in `libc`. //Implementation detail//: some of the functions in `libc` have the same name as standard POSIX ones or they offer slightly different behaviour. To prevent naming clashes, symbols in `libc.a` are renamed to avoid the need to rename the POSIX versions (which was an older approach where renaming was done during preprocessing, however this approach has various disadvantages).