cs50库不会链接到cs50设备中的文件

时间:2014-05-20 00:14:22

标签: c cs50

我对编程并不陌生,但我也不是专家。我在线从哈佛大学学习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 个答案:

答案 0 :(得分:1)

你必须通过运行

告诉编译器在库中链接
clang -lcs50 -o adder adder.c

或只是

make adder

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

答案 1 :(得分:0)

您也可以创建一个Makefile,从现在开始将自动链接cs50库。 为此,创建一个没有扩展名的新文件,并将其命名为Makefile; 在Makefile中只需写下以下行:LDLIBS += -lcs50。 更进一步,当将来需要链接更多库时,请执行相同的操作,例如LDLIBS += -lm添加数学库等。 希望我能为您提供帮助

答案 2 :(得分:0)

Session::getId()

我们从#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); }

开始

答案 3 :(得分:0)

这解决了我在 Ubuntu 上的问题

clang -o adder adder.c -lcs50

由于某种原因ma​​ke命令没有正确链接-lcs50