Necesito reconciliar estos 2 hechos:
- No me siento cómodo trabajando con Linux;
- Necesito desarrollar software para Linux.
Algunos antecedentes: Tengo más de 10 años de experiencia en programación en Windows (casi exclusivamente en C / C ++, pero también en .NET), fui usuario de FreeBSD en casa durante aproximadamente 3 años aproximadamente (luego tuve que volver a Windows), y nunca he tenido mucha suerte con Linux. Y ahora tengo que desarrollar software para Linux. Necesito un plan.
En Windows, puede simplemente saber un lenguaje de programación, una API con la que está codificando, su IDE (VisualStudio) y algunas herramientas muy básicas para solucionar problemas (Depends, ProcessExplorer, DebugView, WinDbg). Todo lo demás viene naturalmente.
En Linux, es una historia muy diferente. ¿Cómo diablos sabría qué DLL (lo siento, Objeto compartido) se cargaría si me vinculara desde el complemento de Firefox? ¿Cuál es el equivalente de Linux de insertar __asm int 3 / DebugBreak () en la fuente y ejecutar el programa, y luego dejar que el sistema operativo llame a un depurador? ¿Por qué las construcciones de lanzamiento del infierno usan algo, llamado appLoader, mientras que las construcciones de depuración funcionan de alguna manera diferente? Lo peor de todo: ¿cómo aprovisionar el entorno de desarrollo de Linux?
Entonces, teniendo en cuenta que el odio generalmente se asocia con no saber lo suficiente, ¿qué recomendaría? Estoy bien con Emacs y GCC. Necesito educarme como administrador / usuario de Linux, y debo aprender las herramientas adecuadas para la resolución de problemas (strace is cool, por cierto), equivalentes a los que mencioné anteriormente.
¿Necesito hacer Linux desde cero? ¿O solo necesito leer algunos libros (leí "Entorno de programación UNIX" de Kernighan y "Programación avanzada ..." de Stevens, pero necesito aprender algo más práctico)? ¿O necesito tener una distribución de Linux en la computadora de mi casa?