indexToolchain y Linking#toolchain#linker#elf#debugging#sanitizers#metal

Toolchain y Linking

gcc main.c esconde cuatro programas y una montaña chica de convenciones. Esta rama los abre: preprocess → compile → assemble → link, qué contiene un object file, cómo el linker resuelve símbolos, el formato ELF, linking estático vs dinámico y el loader que mapea todo eso en un proceso corriendo. Después viene la mitad de disciplina: gdb/lldb, sanitizers (ASan/UBSan/TSan) y valgrind — las herramientas que convierten "crasheó" en un diagnóstico preciso.

Linking es donde se encuentran separate compilation, bibliotecas y el loader. Entendelo y "undefined reference" / "symbol not found" dejan de ser misterios.

Notas planificadas

Fuentes núcleo

  • John Levine — Linkers and Loaders — la columna de esta rama.
  • Ian Lance Taylor — Linkers (serie de 20 partes) — cómo funciona realmente un linker, desde el autor de gold. lwn.net/Articles/276782
  • Ulrich Drepper — How To Write Shared Libraries — dynamic linking en profundidad. akkadia.org/drepper/dsohowto.pdf
  • David Drysdale — Beginner's Guide to Linkers — la rampa de entrada amable. lurklurk.org/linkers/linkers.html
  • ELF specification; docs de sanitizers de Clang (clang.llvm.org/docs); manual de GDB (sourceware.org/gdb).

Conecta con: Assembly y Salida del Compilador · C desde el Metal · OS desde Cero