【问题标题】:Creating a makefile C using all, clean, and other使用 all、clean 和 other 创建 makefile C
【发布时间】:2017-07-30 20:50:31
【问题描述】:

我的教授给了我一个他已经写好的代码,我们必须填写其余部分。现在我们的任务是使用多个目标创建一个 makefile。这些是方向:

“3.创建一个Makefile来创建你的项目。你的makefile应该有以下目标(都放在最上面)

a.).all 创建所有目标文件和可执行文件

b.).Wall.o 从 Wall.c 构建 Wall.o 对象文件

c.).Maze.o 从 Maze.c 构建 Maze.o 目标文件

d.).DisjointSetADT.o 从 DisjointSetADT.c 构建 DisjointSetADT.o 对象文件

e.).MazeBuilder.o 从 MazeBuilder.c 构建 MazeBuilder.o 目标文件

f.).MazeBuilder 从所有目标文件构建 MazeBuilder 可执行文件

g.).clean 删除所有目标文件和可执行文件。"

这是我目前所拥有的:

all: MazeBuilder

Wall.o: Wall.c
    gcc -c -Wall Wall.c

Maze.o: Maze.c
    gcc -c -Wall Maze.c

DisjointSetADT.o: DisjointSetADT.c
    gcc -c -Wall DisjointSetADT.c

MazeBuilder.o: MazeBuilder.c
    gcc -c -Wall MazeBuilder.c

MazeBuilder: MazeBuilder.o Wall.o Maze.o DisjointSetADT.o 
    gcc MazeBuilder.o Wall.o Maze.o DisjointSetADT.o -o MazeBuilder

clean:
    rm -f *.o MazeBuilder

我不知道为什么我的自动评分器说 makefile 不起作用。每个目标下已经有标签,不知道为什么当我复制我的代码时它们没有弹出。

【问题讨论】:

  • 对于初学者:将构建目标和依赖项放在一行中,将构建说明放在下一行,并用 TAB 缩进。不知道你所说的 $-c 是什么意思。
  • 抱歉会转贴不知道为什么会有这些角色
  • 那个makefile不在 C.
  • 应该可以。尝试在本地构建
  • 我得到的错误是mazebuilder没有正确构建

标签: c makefile


【解决方案1】:

我们必须循序渐进。

从包含各种源文件(Wall.cDisjointSetADT.c 等)和 makefile 的目录开始。 这是必不可少的。

1) 从命令行编译。试试这个命令(在命令行中,而不是“make”):

gcc -c -Wall Wall.c

这应该构建Wall.o;如果它没有告诉我们(在对此答案的评论中)确切的结果是什么。如果有效,请删除 Wall.o 并继续...

2) 使用 Make 编译。试试这个:

make Wall.o

这应该与第 1 步完全相同。如果可行,请尝试 make clean 删除 Wall.o

3) 构建所有目标文件:

make MazeBuilder.o Wall.o Maze.o DisjointSetADT.o

4) 手动链接对象:

gcc MazeBuilder.o Wall.o Maze.o DisjointSetADT.o -o MazeBuilder

5) 整个shebang:

make clean
make MazeBuilder

6) 使用默认规则:

make clean
make

告诉我们这个序列在哪里以及如何失败,我们会尝试修复它。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-12-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-10
    • 1970-01-01
    • 2012-12-20
    相关资源
    最近更新 更多