Herramientas de compilación

Compiladores

Compiladores

  • Traducen nuestro código fuente en código de máquina (o sea dependiente de la arquitectura del procesador).
  • El código generado es reubicable en memoria y se puede enlazar con otros códigos.
  • Esto facilita y reduce el tiempo de compilación, solo se compila lo que cambió y luego se arma el ejecutable.

Linker

Linker

  • Es un programa que toma los objetos generados en los primeros pasos del proceso de compilación (compilador) y la información de todos los recursos necesarios (bibliotecas)
  • Quita aquellos recursos que no necesita (p/ej tabla de símbolos), y enlaza el código objeto con su(s) biblioteca(s)
  • Finalmente produce un archivo ejecutable (o una biblioteca)

Entornos de compilación (I)

(Integrated Development Enviroment o IDE)

  • GPL / Open Source
    • Geany (GCC, muy pequeño y liviano)
    • Eclipse (Inicialmente JAVA. Muy grande y pensado como un Framework. Mucho otros IDE. Un ejemplo es el compilador de Code Red Tech usado en informática 2 con Kit ARM)
    • apt-get install eclipse-cdt

    • QT Creator (GCC + librerias QT, también usado en informática 2 para desarrollos en entornos gráficos)
    • apt-get install cmake qtcreator

Entornos de compilación (II)

  • GPL / Open Source
    • CodeBlocks (GCC + Entorno de desarrollo Win/Lin/Mac cross-platform usando librerías wxWidget)
    • wxDev-C++ (GCC + Entorno de desarrollo para Windows solamente usando librerías del proyecto wxWidgets)
  • MS Visual Studio Code: code.visualstudio.com (c/ MinGW)
  • Propietarios/Pagos:
    • Microsoft Visual Studio (actualmente .NET)
    • CodeWarrior (entorno de desarrollo motorola)
    • XCode (de Apple)

El GCC


  • GNU Compiler Collection (GCC): gcc.gnu.org
  • Lenguajes:
    • C, C++ & Objective-C
    • Fortran & Java
    • Ada & Go
  • Ampliamente usado y muchas plataformas:
    • Alpha, amd64, arm, x86, , x86_64, ia64, m68k, mips, powerPC, sparc, mas...



Nota: Otros compiladores nuevos pero
ni remotamente tan populares son LLVM y EGCS

Compilando con GCC (I)

  • compilo directamente a binario:
    gcc -o hola hola.c
  • Compilador para mostrar errores:
    gcc -Wall -o hola hola.c
    gcc -Wall -std=c89 -pedantic-errors -o hola hola.c
  • Para agregar información de debugging:
    gcc -Wall -g -o hola hola.c
  • Solo compilo (no linkeo):
    gcc -c -o hola.o hola.c
  • Compilo con información adicional:
    gcc -c -g -o hola.o hola.c
  • Para ver el código assembler:
    gcc -S hola.c -o -

Archivo ejemplo: hola.c

Compilando con GCC (II)

  • Utilidades
    • file hola.o - información sobre el programa objeto
    • objdump -htr hola.o - información detallada
  • Enlace o linkeo
    • ld -o hola hola.o -lc - enlace de un objeto (ERROR...)
    • gcc -g -o hola hola.o -v - información adicional sobre las librerías usadas
  • Debugging
    • gdb -tui - GNU debugger
      
      file hola
      break main
      run
      				


Tutorial GCC y GDB & GCC intro & Opciones de debug & Otros debuggers

Herramientas

  • Debugging: gdb, ddd, kdbg, etc...
  • Compiler/Linker: gcc
  • Editor: geany, kate, gedit, etc...
  • Proyecto: make
  • Control Versiones: git, svn, cvs, etc...
  • Documentación: doxygen
  • Logging: librerías vistas...

Debuggers


GDB (Manual y Notas)


$ sudo apt-get install cgdb
		

Instalando KDBG:


$ sudo apt-get install kdbg
		

Problemas en Ubuntu 14.04 LTS (trusty)

Interface

CLI vs GUI


INSTALL


  • apt install build-essential cmake qtcreator
  • QTcreator es piola para crear entornos gráficos (usa las librerias QT de KDE).

  • apt install openjdk-11-jdk
  • Ese es el paquete básico (corre sobre Java)
    y luego bajarse eclipse para Linux desde el sitio oficial.

    Eclise es un framework para generar IDEs y se usó para crear el IDE del LPCxpresso



Otros:

  • apt-get install kdevelop
  • apt-get install codeblocks

Ejemplos de uso

  • Geany:
    • Uso simple: ejemplos/getline.c
    • Muchos Archivos: ejemplos/punto3D/main.cpp
  • QTCreator: Armar un proyecto con QT y ver opciones
  • Eclipse CDT: Armar un proyecto y mostrar debugging factorial
  • Visual Studio Code: Podemos hacer lo mismo que con Eclipse

Visual Studio Code




En vsCode usar "Ctrl+P", pegar y ejecutar:

(el "Ctrl+P" despliega el "Go to file" box que recibe ese comando)

ext install ms-vscode.cpptools

No es necesario para debugging, pero de la misma manera se puede instalar:

ext install ms-vscode.cpptools-extension-pack