símbolo indefinido para la arquitectura x86_64 en la compilación del programa C
(1)
Esta pregunta ya tiene una respuesta aquí:
Tengo un programa simple como demo_use.c
#include "libhello.h"
int main(void) {
hello();
return 0;
}
libhello.h
void hello(void);
libhello.c
#include <stdio.h>
void hello(void) {
printf("Hello, library world./n");
}
He usado el comando en la terminal como
gcc demo_use.c -o test
error Símbolos indefinidos para arquitectura x86_64: "_hello",
referenciado desde: _main en ccZdSQP3.o
ld: símbolo (s) no encontrado (s) para la arquitectura x86_64 collect2: ld devolvió 1 estado de salida
Necesita compilar ambos archivos fuente juntos para generar el binario. utilizar
gcc demo_use.c libhello.c -o test
De lo contrario, la definición de la función
hello()
estará ausente.
Entonces, en el momento del enlace, el enlazador arrojará
undefined symbol
error de
undefined symbol
.