- Um engenheiro de software escreveu um patch para o GCC, simplificando a criação de executáveis realmente portáveis com a Cosmopolitan Libc.
- Com esse patch, é possível compilar softwares populares como bash, curl, git e o próprio gcc com a Cosmopolitan Libc sem alterar o código-fonte.
- Os executáveis gerados podem rodar em Linux, FreeBSD, MacOS, OpenBSD, NetBSD e, em alguns casos, no Windows.
- O artigo fornece instruções passo a passo sobre como portar seu próprio software para a Cosmopolitan Libc.
- O patch resolve problemas em instruções switch e na inicialização de structs que dependem de valores do sistema.
- O autor inicialmente tentou automatizar a conversão com scripts em sed e Python por causa do pré-processador C e dos
ifdef, mas isso não funcionou completamente.
- Depois, o autor explorou o uso de um plugin do GCC e a possibilidade de aplicar patch no próprio GCC para resolver o problema.
- Com o GCC modificado, é possível compilar software com a Cosmopolitan Libc, tornando o processo de portabilidade mais fácil e fluido.
- O autor conseguiu compilar o lua com sucesso e fez alterações no python3.11 para acessar repositórios ZIP.
- Ao compilar o busybox, que usa arrays de strings como tabelas de consulta, o autor encontrou dificuldades.
- Também houve desafios com a inicialização de structs no ncurses por causa de expressões binárias.
- O autor conclui que, na maioria dos casos, as mudanças necessárias para portar software para a Cosmopolitan Libc são mínimas.
- O autor reconhece que o patch pode não ser perfeito e pode ter algumas limitações.
- O autor incentiva os leitores a tentar compilar software em C com a Cosmopolitan Libc.
- O autor menciona a possibilidade de executar os binários no Windows, mas não testou isso.
- O autor fornece informações adicionais e materiais de referência.
3 comentários
Então agora o neo está adotando um formato em que as mensagens ficam envoltas em blocos de código? É um pouco chato ter que fazer rolagem horizontal, e a cor do texto em tons de vermelho também deixa um pouco a desejar...
Ah, isso ser envolvido em um bloco de código é um bug T_T
Comentários no Hacker News
errno.std::error_code.EINVAL.