Preciso conciliar esses 2 fatos:
- Não me sinto confortável trabalhando no Linux;
- Eu preciso desenvolver software para Linux.
Alguns antecedentes: Tenho mais de 10 anos de experiência em programação no Windows (quase exclusivamente C / C ++, mas também alguns .NET), eu era usuário do FreeBSD em casa por cerca de 3 anos (mais ou menos). Windows) e nunca tive muita sorte com o Linux. E agora eu tenho que desenvolver software para Linux. Eu preciso de um plano.
No Windows, você pode se familiarizar apenas com o conhecimento de uma linguagem de programação, uma API contra a qual está codificando, seu IDE (VisualStudio) e algumas ferramentas básicas para solução de problemas (Depends, ProcessExplorer, DebugView, WinDbg). Tudo o resto vem naturalmente.
No Linux, é uma história muito diferente. Como diabos eu saberia qual DLL (desculpe, Objeto Compartilhado) carregaria, se eu vincular a ela a partir do plugin Firefox? Qual é o equivalente do Linux à inserção de __asm int 3 / DebugBreak () na fonte e na execução do programa, e depois deixar o SO chamar um depurador? Por que as versões infernais usam algo chamado appLoader, enquanto as versões depuração funcionam de alguma forma diferente? O pior de tudo: como provisionar o ambiente de desenvolvimento Linux?
Então, considerando que o ódio geralmente está associado a não saber o suficiente, o que você recomendaria? Eu estou bem com Emacs e GCC. Preciso me educar como administrador / usuário do Linux e preciso aprender as ferramentas adequadas para solução de problemas (strace is cool, btw), equivalentes às mencionadas acima.
Preciso fazer o Linux a partir do zero? Ou preciso apenas ler alguns livros (li o "ambiente de programação UNIX" de Kernighan e "Advanced Programming ..." de Stevens, mas preciso aprender algo mais prático)? Ou preciso ter alguma distribuição Linux no meu computador doméstico?
mané seu amigo. Eu faria man nme man ldcomo ponto de partida.