1

我对编程并不陌生,但我也远非专家。我正在从哈佛在线获取 CS50,我正在尝试使用 cs50 库中的函数,这些函数应该在 cs50 设备(Fedora 虚拟机版本 19-2)内自动工作。我的问题是,当我#include <cs50.h>像他在讲座中那样编译时,我收到一条错误消息。

这是一个来自演讲幻灯片的简单程序。

#include <cs50.h>
#include <stdio.h>

int main(void)
{
    // ask user for input
    printf("Give me an integer: ");
    int x = GetInt();
    printf("Give me another integer: ");
    int y = GetInt();

    // do the math
    printf("The sum of %i and %i is %i!\n", x, y, x + y);
}

这是我收到的错误消息:

jharvard@appliance (~/Dropbox/pset-1): ls
adder.c  even-odd.c  hello
jharvard@appliance (~/Dropbox/pset-1): clang -o adder adder.c
/tmp/adder-iuV3am.o: In function `main':
adder.c:(.text+0x19): undefined reference to `GetInt'
adder.c:(.text+0x32): undefined reference to `GetInt'
clang: error: linker command failed with exit code 1 (use -v to see invocation)
jharvard@appliance (~/Dropbox/pset-1): 

我的猜测是由于某种原因它没有找到图书馆。有没有人知道需要做什么才能让所有事情都说清楚?

我搜索了其他一些关于使用 cs50.c 文件的答案的问题,但我认为这些问题来自试图在他们自己的机器上而不是在一体机中编译的人。

4

4 回答 4

3

您必须通过运行来告诉编译器链接库

clang -lcs50 -o adder adder.c

或者干脆

make adder

因为他们已经为您配置了。

于 2014-05-20T00:19:29.283 回答
0

您不妨创建一个从现在开始自动链接 cs50 库的 Makefile。为此,制作一个没有扩展名的新文件并将其命名为 Makefile;在 Makefile 中简单地写下这一行:LDLIBS += -lcs50. 此外,当您将来需要链接更多库时,也可以这样做,例如LDLIBS += -lm添加数学库等。我希望我能帮助你

于 2019-03-16T03:22:57.267 回答
0

这解决了我在 Ubuntu 上的问题

clang -o adder adder.c -lcs50

由于某种原因,make命令没有正确链接 -lcs50

于 2021-07-30T20:32:24.970 回答
0
#include <stdio.h>
#include <cs50.h>
int main (void)
{
  printf ("Get me integer: " );
  int x = get_int("");
  printf ("Get me another integer: ");
  int y = get_int("");
  printf (" the sum of %i and %i is %i \n ", x,y,x+y);
}

我们从这个开始clang -lcs50 sum.c -o sum

于 2020-01-24T11:00:32.783 回答