Two problems arise since applications are compiled with the OSKit header files and linked against the OSKit libraries. First, is the issue of binary-level compatibility between the OSKit and any particular Unix system. Since the OSKit definitions of system data structures and flags (e.g., the layout of the stat structure, or the value of error codes) are likely to differ from those of the native OS, there is a need for glue code to map between the two. Additionally, the Unix glue layer needs a way to call the underlying Unix system's syscalls. It cannot invoke them directly by name (e.g., read) since those names are redefined by the OSKit. The Native OS library solves both of these problems, converting syscall arguments, structures and error return codes as well as providing syscall stubs for the native system calls. The Native OS library for Linux can be found in oskit/examples/unix/linux; the FreeBSD version is in oskit/examples/unix/freebsd.