- Un ingeniero de software escribió un parche para GCC que simplifica la creación de ejecutables realmente portables usando Cosmopolitan Libc.
- Con este parche, es posible compilar con Cosmopolitan Libc software popular como
bash, curl, git y el propio gcc sin modificar el código fuente.
- Los ejecutables compilados pueden ejecutarse en Linux, FreeBSD, MacOS, OpenBSD, NetBSD y, en algunos casos, Windows.
- Este artículo ofrece instrucciones paso a paso sobre cómo portar tu propio software a Cosmopolitan Libc.
- El parche resuelve problemas con sentencias
switch e inicializaciones de estructuras que dependen de valores del sistema.
- Al principio, el autor intentó automatizar la conversión usando
sed y scripts de Python debido al preprocesador de C y a ifdef, pero no funcionó por completo.
- Luego, el autor exploró el uso de un plugin de GCC y la posibilidad de parchear el propio GCC para resolver el problema.
- Usar GCC parcheado permite compilar software con Cosmopolitan Libc, haciendo que el proceso de portabilidad sea más fácil y fluido.
- El autor compiló con éxito
lua e hizo cambios en python3.11 para acceder a un repositorio ZIP.
- El autor tuvo dificultades al compilar
busybox, que usa arreglos de cadenas como tablas de búsqueda.
- También hubo desafíos con la inicialización de estructuras en
ncurses debido a expresiones binarias.
- El autor concluye que, en la mayoría de los casos, los cambios necesarios para portar software a Cosmopolitan Libc son mínimos.
- El autor reconoce que el parche puede no ser perfecto y que podría tener algunas limitaciones.
- El autor anima a los lectores a intentar compilar software en C con Cosmopolitan Libc.
- El autor menciona la posibilidad de ejecutar los binarios en Windows, aunque no lo probó.
- El autor proporciona información adicional y materiales de referencia.
3 comentarios
¿Ahora neo está yendo hacia un formato en el que los mensajes van envueltos en bloques de código? Tener que hacer desplazamiento horizontal y el color de texto en tonos rojos me deja un poco insatisfecho...
Ah, es un bug que se envuelva en un bloque de código :(
Opiniones de Hacker News
errno.std::error_code.EINVAL.