Spesso, l'insieme delle syscall esportate dal sistema operativo, detto anche interfaccia, o più propriamente Application Programming Interface (API), risulta essere troppo di basso livello per essere utilizzabile in maniera semplice dall'utente. Per questo motivo, vengono talvolta fornite delle librerie che implementano funzionalità di più alto livello basandosi sulle chiamate di sistema. Tipicamente, una libreria mette a disposizione delle chiamate di libreria (library call, o più brevemente libcall) che esportano un'interfaccia più potente e semplice da usare rispetto a quella fornita dalle chiamate di sistema. Bisogna però tenere presente che una chiamata di libreria eseguirà del codice di libreria in modo utente, e poi eventualmente chiamerà una o più syscall che eseguiranno in modo kernel.
Un tipico esempio per chiarire quanto appena detto è costituito dalla libreria standard del linguaggio C (libc): fra le altre cose, essa implementa gli stream di I/O, fornendo un modo semplice e potente per accedere ai file. Un file può essere aperto tramite la libcall fopen() e può essere acceduto in scrittura tramite la libcall fprintf(), che permette di scrivere numeri e stringhe effettuando automaticamente la conversione di formato. Tali funzioni si basano su alcune chiamate di sistema, che in sistemi Unix sono open() e write(), le quali permettono un accesso al file senza bufferizzazione dello stream e senza conversione di formato. Un utente può indifferentemente scegliere di accedere ad un file tramite le chiamate di sistema o le chiamate della libc, ma deve sempre sapere cosa sta facendo (e cosa la propria scelta implica), in quanto i due tipi di accesso non possono essere arbitrariamente mescolati (per esempio, non si può - chiaramente - effettuare una fprintf() su un file aperto con open()).