ago 2010 07

Uma das bibliotecas C mais úteis já produzidas é a GLib. Trata-se de um aglomerado de utilidades para linguagem C que inclui utilidades para strings, gerenciamento de memória, utilitários para arrays, listas, enfim, pense em algo e a GLib tem.

Compilei a GLib no Mac, porém ela exigia uma versão diferente da libiconv. Baixo e compilo a libiconv, volto pra GLib e tudo funciona sem problemas.

Muitas luas depois, preciso do VirtualBox para rodar o Windows, pois há um certo banco aqui no Brasil cujo home-banking não funciona no Mac. Então descubro que o VirtualBox não funciona mais…. A interface gráfica não dá dicas de por que o ícone aparece e some rapidamente. Parece um crash durante a inicialização, e nessa hora o terminal é nosso amigo.

Através do terminal, vou até /Applications/VirtualBox.app/Contents/MacOS e rodo o aplicativo ./VirtualBox. Para minha surpresa, o VirtualBox reclama que não encontrou o símbolo _iconv na bibliotea /usr/lib/libiconv.2.dylib

Recompilo o libiconv para outra arquitetura, usando um configure diferente. Usei ./configure –prefix=/usr CFLAGS=’-arch i386′ (cuidado, não compile usando esta opção). Tentei também outras arquiteturas, como x86_64. A experiência com arch i386 foi um desastre completo, tudo parou de funcionar. Não tinha mais acesso ao terminal, pois nenhum shell funciona sem o libiconv incluindo /bin/ksh, /bin/zsh e /bin/csh – todos que acompanham o Mac OS X.

Pior, o make não funciona sem o libiconv….ou seja, não tinha como recompilar a fonte da libiconv novamente para x86_64 – A solução era baixar uma versão binária do libiconv…mas onde? Busquei por toda parte, mas a única que encontrei era para Power PC, não ia resolver. O site DarwinPorts tem links para download que não funcionam, não conseguí testar.

DVD do Mac OS X ao Resgate
O jeito foi usar o DVD de instalação do Mac OS X. Já que não tenho shell, preciso fazer tudo pelo Finder. Primeiro é preciso expor os arquivos ocultos. Depois, é só navegar até usr/lib no DVD e copiar libiconv.2.dylib para /usr/lib – e pronto! Esquecí a GLib por agora, o importante é ter o resto do sistema funcionando.

O que você acha?