c

símbolo indefinido para la arquitectura x86_64 en la compilación del programa C



(1)

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 .