1

我正在努力使用curses.h为下面的示例代码制作一个makefile。

#include <stdio.h>
#include <stdlib.h>
#include<curses.h>    

int main(){
WINDOW *initscr(void);
initscr();
int endwin(void);
return 0;
}

我在 Netbeans 中包含了库和头文件,但是当我尝试使用 makefile 构建时:

CC=C:\TDM-GCC-64\bin\gcc
CFLAGS=-std=gnu99 -Werror -Wall -lm -lncurses
DEPS=curses.h
OUTPUT=main

all:
    echo "Building all"
    $(CC) $(CFLAGS) render.c -o $(OUTPUT)

它给了我:

echo "Building all"
Building all
C:\TDM-GCC-64\bin\gcc -std=gnu99 -Werror -Wall -lm -lncurses render.c -o main
render.c:3:19: fatal error: curses.h: No such file or directory
 #include<curses.h>
                   ^
compilation terminated.
make.exe": *** [all] Error 1

BUILD FAILED(退出值2,总时间:150ms)

4

2 回答 2

1

只需添加-I。-L。到您的 CFLAGS 宏中,这会将项目库添加​​到预处理器和链接器的搜索路径中。如果您的项目文件夹中有 curses 头文件和库文件,这应该可以工作。如果头文件或库文件位于不同的文件夹中,只需相应地修改 -I 或 -L 标志。

您的最后一条评论表明预处理和编译进行得很好,但链接器找不到库文件。

作为一般说明,最好将编译器标志放入 CFLAGS 并将链接器标志放入不同的宏,例如 LDFLAGS。

宏 DEPS 也应该用于启用增量编译。它通常用作编译规则的依赖项,但由于您没有单独拥有它,您可以将它放在除此之外的所有内容之外,例如:

all : $(DEPS)
于 2014-05-19T20:35:37.070 回答
1

这是我所做的,它有效,但它仍然返回 8 个错误。下面列出了修复 8 个错误中的 1 个的解决方案。

我 cd 到 thadgavin.c 的位置(对我来说它是“pset1/source”)

对于 ubuntu(我用的是 16.04)

$ cc thadgavin.c -lm -lncurses

$ ./a.out

您可以将 a.out 重命名为 thadgavin (与“make”相同,如果它可以工作的话)。

$ mv a.out thadgavin

好了,希望这有助于解决最后一个错误。

注意:main() 中有一个简单的错误修复,您需要先将其指定为 int。我相信它在第 61 行?

例如; “int main()”仅显示为“main()”,因为“int”使用抽象布局语法位于顶部,我不相信它知道它已被称为 int。我可能是错的,希望其他人可以阐明这个问题。

https://youtu.be/oOUgU0z4qeY

如果您解决了其余任何错误,请发布到我的视频或发送电子邮件至 Python253@gmail.com 以供其他人从您的解决方案中受益。

谢谢,我的名字是 Daniel Paul Evans .... 这是 CS50!

于 2016-04-11T13:11:23.217 回答