Necesito conciliar estos 2 hechos:
- No me siento cómodo trabajando en Linux;
- Necesito desarrollar software para Linux.
Algunos antecedentes: tengo más de 10 años de experiencia en programación en Windows (casi exclusivamente C / C ++, pero también algunos .NET), fui usuario de FreeBSD en mi hogar durante aproximadamente 3 años (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 salirse con solo conocer un lenguaje de programación, una API con la que está codificando, su IDE (VisualStudio) y algunas herramientas muy básicas para la resolución de problemas (depende, ProcessExplorer, DebugView, WinDbg). Todo lo demás viene naturalmente.
En Linux, es una historia muy diferente. ¿Cómo demonios sabría qué DLL (perdón, Objeto compartido) se cargaría si lo vinculo 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é demonios las versiones de lanzamiento usan algo llamado appLoader, mientras que las versiones 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ías? Estoy bien con Emacs y GCC. Necesito educarme como administrador / usuario de Linux, y necesito aprender las herramientas adecuadas de solución de problemas (strace is cool, por cierto), equivalentes a las que mencioné anteriormente.
¿Necesito hacer Linux desde cero? ¿O necesito leer algunos libros (he leído "Entorno de programación UNIX" de Kernighan y "Programación avanzada ..." de Stevens, pero necesito aprender algo más práctico)? ¿O necesito tener alguna distribución de Linux en la computadora de mi casa?
man
es tu amigo. Lo haría man nm
y man ld
como punto de partida.