Más sobre bibliotecas C para sistemas embebidos

written by uve 25 February 2011

Ayer hablaba brevemente acerca de newlib. Hoy voy a analizar otras dos librerías importantes: uClibc y EGLIBC. Ambas son compatibles con GLIBC, la biblioteca C de GNU.

Cuando vamos a crear un toolchain, es necesario elegir una biblioteca C, en la que se basará la generación de los binarios. Esta elección dependerá de la plataforma de destino y las limitaciones que tengamos.

¿Cuál elegir? GLIBC ha sido ampliamente utilizada en los últimos años en prácticamente cualquier distribución de Linux. Esta librería está enfocada a servidores y a escritorio, por lo que no hay optimizaciones para dispositivos empotrados. Por este motivo surgen el resto de bibliotecas mencionadas.

uClibc (ó micro controller libc) surge como parte del desarrollo de uLinux para dar soporte a microcontroladores sin MMU. Así, si disponemos de una arquitectura sin MMU, ésta es nuestra biblioteca. Además, tiene soporte para los procesadores alpha, amd64, ARM, Blackfin, cris, h8300, hppa, i386, i960, ia64, m68k, mips/mipsel, PowerPC, SH, SPARC, y v850.

EGLIBC (ó embeded GLIBC) mantiene un desarrollo paralelo con GLIBC, es decir, no trata de ser un fork. Por problemas en el proceso de desarrollo de GLIBC, algunos programadores decidieron llevar el proyecto en paralelo, utilizando incluso parches de la rama principal de GLIBC. La principal ventaja de esta librería es que mantiene compatibilidad binaria, es decir, software compilado y enlazado con GLIBC funcionará con EGLIBC, pero en cambio habrá que volver a compilar para otras bibliotecas, como newlib o uClibc. Por esta razón, hace un tiempo que Debian y Ubuntu la utilizan como biblioteca C del sistema. Al ser un proyecto relativamente joven, aún no ha llegado a muchas de las arquitecturas, así que ellos mismos te recomiendan que de momento uses uClibc.

En definitiva, en función de tus necesidades y tus posibilidades podrás utilizar una u otra.

Tags

La teoría es cuando crees saber algo, pero no funciona.
La práctica es cuando algo funciona, pero no sabes por qué.
Los programadores combinan la teoría y la práctica:
Nada funciona y no saben por qué.