我参加这门课程,有时我需要在旅行或通勤时离线练习。在 Windows 下使用 MinGW 和 Notepad++ 作为 IDE(因为我喜欢它并且通常在编写 python 时使用它)我终于找到了一个解决方案,并有时间把它写下来。
从头开始。设置gcc C编译器的步骤,如果已经设置请跳到5
- 下载 Git并安装。它包括 Git Bash,它是 MINGW64 linux 终端。我更喜欢使用 Git,因为我需要在我的 Windows 上使用 sed、awk、pull、push 等 linux 工具,并且可以替换 Guthub 的终端。
- 安装 Git 后,请确保已安装 gcc 包。你可以参考我的配置...
确保您的编译器工作正常。抛出这个简单的代码,
- 通过将其保存在您的工作目录Documents/Harvard_CS50/Week2/
hello.c
#include <stdio.h>
int main(void)
{
printf("Hello StackOverflow\n");
}
cd 文件/Harvard_CS50/Week2/
gcc helloworld.c -o helloworld.exe
./helloworld.exe
你好 StackOverflow
- 如果您看到Hello StackOverflow,说明您的编译器工作正常,您可以编写 C 代码。
现在到了重要的一点,在本地安装 CS50 库并离线使用它。这应该适用于本课程后面介绍的任何其他库。
从https://github.com/cs50/libcs 50/tree/develop/src下载最新的源代码文件 cs50.c 和头文件 cs50.h并保存在Documents/Harvard_CS50/src
导航到 src 目录并列出文件以确保您在正确的位置使用
ls
cs50.c cs50.h
酷,我们来了。现在我们需要使用编译库的目标文件
gcc -c -ggdb -std=c99 cs50.c -o cs50.o
现在使用生成的 cs50.o 目标文件,我们可以创建 cs50 库存档文件。
ar rcs libcs50.a cs50.o
在所有这些步骤之后,我们以原始文件的 2 个附加文件结束。我们只对其中 2 个感兴趣cs50.h libcs 50.a
ls
cs50.c cs50.h cs50.o libcs50.a
将库和头文件复制到它们的目标位置。我的 MinGW 安装在 C:\ 所以我将它们复制到那里
cs50.h --> C:\MinGW\include
libcs50.a --> C:\MinGW\lib
测试 cs50 库
为了确保我们的库正常工作,我们可以在讲座中抛出一个示例脚本,看看我们是否可以使用 get_string() 方法的 cs50.h 头文件来编译它。
#include <stdio.h>
#include <cs50.h>
int main(void)
{
printf("Please input a string to count how long it is: ");
string s = get_string();
int n = 0;
while (s[n] != '\0')
{
n++;
}
printf("Your string is %i chars long\n", n);
}
使用 gcc 和 cs50 库编译 cs50 代码。我想明确并使用:
gcc -ggdb -std=c99 -Wall -Werror test.c -lcs50 -o test.exe
但是你可以简单地指向源、输出文件名和cs50库
gcc test.c -o test.exe -lcs50
在这里,程序是使用头文件编译的,并且可以在其中使用方法。
如果您希望 Notepad++ 作为 IDE,您可以按照此提示将其设置为 gcc 作为编译器并从那里运行您的代码。只需确保您的 nppexec 脚本包含 cs50 库
npp_save
gcc -ggdb -std=c99 -Wall -Werror "$(FULL_CURRENT_PATH)" -lcs50 -o "$(CURRENT_DIRECTORY)\$(NAME_PART).exe"
cmd /c "$(CURRENT_DIRECTORY)\$(NAME_PART).exe"