-1

我在用 gcc 编译的“c”语言中遇到问题。

  1. 我在 windows xp 中使用带有(gcc-core、gcc-g++、gdb、make 和其他支持包)的“Cygwin”。
  2. 我在这个路径“C:\Cygwin\”上安装了“Cygwin”。
  3. 我的主目录:“C:\Cygwin\home\Bhanu Pratap”
  4. 我在我的工作目录中复制了“cs50.h”和“cs50.c”,该目录也在“C:\Cygwin\home\Bhanu Pratap”下。

这是我的 hello.c 文件中的代码

#include "cs50.h"
#include <stdio.h>
int
main(void){
  string name = "David";
  printf("O hai, %s!\n", name);
}

这是 bash (Cygwin) 下的命令

gcc -o hello hello.c -lc50

我收到此错误:

/usr/lib/gcc/i686-pc-cygwin/3.4.4/../../../../i686-pc-cygwin/bin/id: cannot find -lcs50
collect2: Id returned 1 exit status

请帮助我哪里错了?

4

4 回答 4

2

我也在使用 cs50 库文件,我注意到您使用的代码是:

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

还有这个命令:

gcc -o hello hello.c -lc50

只是想知道你为什么使用引号,而不是 '< >' 和命令的最后一部分-lc50

我们通常这样使用它:

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

-lcs50

希望这有助于 \m/

于 2013-03-22T11:16:44.347 回答
1

为了能够使用-lcs50,您首先需要cs50从其源代码 ( ) 构建该库 ( cs50.c)。

或者,您可以简单地:

gcc -o hello hello.c cs50.c

假设cs50.c没有其他依赖项。

于 2011-10-01T13:25:01.023 回答
1

我在 Windows XP 中为 CS50 edX 课程使用 DJGPP (gcc) 编译器。

我尝试了与答案不同的解决方案,但没有一个对我有帮助(尽管Mat给了我一个线索)。

这是一个解决方案:

1) 复制cs50.hcs50.clibrary50-c-5.zip您要编译的 .c 源文件所在的目录中复制。

2) 输入您的 .c 源文件:#include "cs50.h"

3) 编译你的 .c 源文件(例如在 cmd.exe 提示符下):gcc custom.c -o custom cs50.c

您可以cmd.exe从“ `C:\WINDOWS\system32 ”文件夹复制到您的工作文件夹(带有您的 .c 文件)。在这种情况下,当您启动命令提示符窗口时,您不必更改目录来导航到您的工作文件。

于 2014-11-11T21:37:14.413 回答
0

有关安装 cs50.h 库的指导,请参阅链接http://manual.cs50.net 。他们有一个预编译版本的 cs50 库,可以下载和安装。值得一试。他们使用 gcc 编译库,他们开始切换到 clang,它也可以生成 64 位兼容的库,这将在未来更加有用。

于 2013-03-07T15:05:24.450 回答