Mam problemy z kompilowaniem bardzo prostego pliku name.c na Mac OSX Lion.C - Niezdefiniowane symbole dla architektury x86_64 podczas kompilacji na Mac OSX Lion
Teraz zacząłem śledzić kurs Harvard CS50 na cs50.net. Nie jestem całkowicie nowy w programowaniu, ale byłem ciekawy, jak ten kurs został nauczony.
Jest źródłem nazwa.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;
}
Jak widać, to wymaga tej biblioteki: https://manual.cs50.net/CS50_Library.
Teraz, kiedy go skompilować, to się dzieje:
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
Jeśli mogę użyć tego samego getString() function cs50.c w moim pliku źródłowego, to działa doskonale:
#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
}
Dlaczego czy to się stało? Zainstalowałem bibliotekę tak, jak jest napisane na powyższym łączu; Sprawdziłem i oba cs50.h i libcs50.a są odpowiednio w/usr/local/include i/usr/local/lib.
Z góry dziękujemy za pomoc.
Czy przekazujesz '-lcs50' do kompilatora? – apmasell
A także odpowiednie '-L', aby powiedzieć kompilatorowi, gdzie szukać '-lcs50'? –
twalberg