Tengo un problema con mi compilador diciéndome que hay una 'referencia indefinida' a una función que quiero usar en una biblioteca. Permítanme compartir algo de información sobre el problema:linker woes - referencia indefinida
- estoy compilación cruzada con gcc para C.
- Estoy llamando a una función de biblioteca que se accede a través de una cabecera incluida que incluye otra cabecera, que contiene el prototipo .
- He incluido el directorio de encabezados usando -I y estoy seguro de que se está encontrando.
- Primero estoy creando los archivos .o luego vinculándolos en un comando separado.
Así que mi idea es que podría ser el orden en el que incluyo los archivos de la biblioteca, pero no estoy seguro de cuál es la forma correcta de pedirlos. Intenté incluir la carpeta de encabezados antes y después del archivo .o.
Algunos sugieren que sería genial, y tal vez, y una explicación de cómo el enlazador hace su trabajo.
Gracias!
respuesta a las respuestas
- no hay ningún archivo de biblioteca .a, simplemente .hy .c en la biblioteca, por lo que no es apropiado -l
- mi comprensión de un archivo de biblioteca es que es solo una colección de archivos de cabecera y fuente, pero tal vez es una colección de archivos .o creados a partir de la fuente ?!
- no se está creando ningún archivo de objeto de biblioteca, tal vez debería haberlo ?? Sí, parece que no entiendo la diferencia entre includes y libraries ... voy a trabajar en eso :-)
¡Gracias por todas las respuestas! Aprendí mucho sobre las bibliotecas. Me gustaría poner todas las respuestas como la respuesta aceptada :-)
Un archivo de encabezado ('.h' por defecto) _can_ contiene cualquier tipo de fuente C, pero se desaconseja colocar todo menos las definiciones de macro y _declarations_ allí. – vonbrand