Ho bisogno di riconciliare questi 2 fatti:
- Non mi sento a mio agio a lavorare su Linux;
- Ho bisogno di sviluppare software per Linux.
Alcuni background: ho un'esperienza di programmazione di oltre 10 anni su Windows (quasi esclusivamente C / C ++, ma anche alcuni .NET), ero a New York da circa 3 anni come utente di FreeBSD (quindi dovevo tornare a Windows), e non ho mai avuto molta fortuna con Linux. E ora devo sviluppare software per Linux. Ho bisogno di un piano.
Su Windows, puoi farti a meno di conoscere un linguaggio di programmazione, un'API che stai codificando, l'IDE (VisualStudio) e alcuni strumenti di base per la risoluzione dei problemi (Depends, ProcessExplorer, DebugView, WinDbg). Tutto il resto viene naturale.
Su Linux, è una storia molto diversa. Come diavolo saprei cosa potrebbe caricare la DLL (mi dispiace, oggetto condiviso) se collego ad esso dal plugin di Firefox? Qual è l'equivalente Linux dell'inserimento di __asm int 3 / DebugBreak () nell'origine e nell'esecuzione del programma, e quindi che il sistema operativo chiama un debugger? Perché diavolo le build di rilascio usano qualcosa, chiamato appLoader, mentre le build di debug funzionano in qualche modo in modo diverso? Il peggiore di tutti: come fornire un ambiente di sviluppo Linux?
Quindi, tenendo conto che l'odio è solitamente associato a non sapere abbastanza, cosa consiglieresti? Sto bene con Emacs e GCC. Ho bisogno di istruirmi come amministratore / utente di Linux e ho bisogno di apprendere strumenti adeguati per la risoluzione dei problemi (strace è cool, btw), equivalenti a quelli che ho citato sopra.
Devo fare Linux da Scratch? O devo solo leggere alcuni libri (ho letto "UNIX programming environment" di Kernighan e "Advanced Programming ..." di Stevens, ma ho bisogno di imparare qualcosa di più pratico)? O devo avere qualche distro Linux sul mio computer di casa?