Tengo algunos problemas para compilar un archivo name.c muy simple en Mac OSX Lion.C - Símbolos indefinidos para la arquitectura x86_64 al compilar en Mac OSX Lion
Ahora, empecé a seguir Harvard CS50 curso en cs50.net. No soy totalmente nuevo en programación, pero tenía curiosidad sobre cómo se ha impartido este curso.
Esta es la fuente de name.c:
#include <stdio.h>
#include <cs50.h>
int
main(void)
{
printf("State your name:\n");
string name = GetString();
printf("O hai, %s!\n", name);
return 0;
}
Como se puede ver, se requiere de esta biblioteca: https://manual.cs50.net/CS50_Library.
Ahora, cuando compilo, esto sucede:
Undefined symbols for architecture x86_64:
"_GetString", referenced from:
_main in name-vAxcar.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make: *** [name] Error 1
Si utilizo la misma función GetString cs50.c() dentro de mi archivo de origen, funciona perfectamente:
#include <stdio.h>
#include <string.h>
#include <float.h>
#include <limits.h>
#include <stdbool.h>
#include <stdlib.h>
typedef char *string;
string GetString(void);
int
main(void)
{
printf("State your name:\n");
string name = GetString();
printf("O hai, %s!\n", name);
}
string
GetString(void)
{
// CODE
}
Por qué sucede esto? Instalé la biblioteca como dice en el enlace de arriba; Revisé y tanto cs50.h como libcs50.a están respectivamente en/usr/local/include y/usr/local/lib.
Gracias de antemano por su ayuda.
¿Está pasando '-lcs50' a su compilador? – apmasell
Y también un apropiado '-L' para decirle al compilador dónde buscar '-lcs50'? –
twalberg