У меня возникают проблемы при компиляции очень простого файла name.c в Mac OSX Lion.
Теперь я начал следовать курсу Harvard CS50 на cs50.net. Я не совсем новичок в программировании, но мне было любопытно, как преподается этот курс.
Это источник 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;
}
Как видите, для этого требуется следующая библиотека: https://manual.cs50.net/CS50_Library.
Теперь, когда я его компилирую, это происходит:
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
Если я использую ту же функцию GetString() cs50.c внутри моего исходного файла, она работает отлично:
#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
}
Почему это происходит? Я установил библиотеку, как написано по ссылке выше; Я проверил, и cs50.h, и libcs50.a находятся соответственно в /usr/local/include и /usr/local/lib.
Спасибо заранее за вашу помощь.
-lcs50
своему компилятору? - person apmasell   schedule 24.08.2012-L<some_directory>
, чтобы указать компилятору, где искать-lcs50
? - person twalberg   schedule 24.08.2012