我在 Mac OSX Lion 上编译一个非常简单的 name.c 文件时遇到了一些问题。
现在,我开始在 cs50.net 上学习哈佛 CS50 课程。我对编程并不完全陌生,但我很好奇这门课程是如何教授的。
这是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中。
预先感谢您的帮助。