Development/Tutorials/Debugging Linker Errors (es)

From KDE TechBase
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.


Solucionando problemas de enlazado
Serie   Getting Started
Requisitos previos   Ninguno
Siguiente   n/d
Lectura avanzada   n/d

Este tutorial da pasos precisos para solucionar problemas relacionados con el enlazado de aplicaciones y librerías.

«Undefined symbol»

Cuando el enlazador dice "Undefined reference to 'foo'" y no sabes por qué, sigue estos pasos:

  • Verifica que la librería que supuestamente provee este símbolo está realmente en el comando del enlazador. Para ver el comando completo con CMake, usa make VERBOSE=1. Si -lkdecore está en el comando, entonces al menos le estamos pidiendo al enlazador que use libkdecore.
  • Verifica que se está enlazando la versión correcta de la librería, y no una de un lugar incorrecto. Para ver qué librería está siendo usada por ld, copia y pega el comando completo que da make VERBOSE=1, y agrégale: -Q -v -Wl,-t. En algún lugar del resultado verás la ruta completa de cada librería que se está usando.
  • Verifica que la librería realmente tiene este símbolo. Usa nm -D -C /path/to/lib.so | grep Foo. Si el símbolo aparece con una 'T' ó una 'W' en la segunda columna, entonces efectivamente está provisto por esta librería. Si aparece con una 'U' entonces está sin definir en esta librería, y debe ser provisto por otra librería.