【发布时间】:2017-03-13 01:03:34
【问题描述】:
我已经创建了一个 Makefile。现在,我收到以下错误:
- clang:警告:brians_brain.o:“链接器”输入未使用
- clang: 警告:cell.o: 'linker' 输入未使用
- clang:警告:cell_grid.o:“链接器”输入未使用
- 架构 x86_64 的未定义符号: “_List_Delete”,引用自: _main in brians_brain_cellular_automata.o “_List_Read”,引用自: _main in brians_brain_cellular_automata.o ld:未找到架构 x86_64 的符号 clang:错误:链接器命令失败,退出代码为 1(使用 -v 查看调用) make: *** [brians_brain_cellular_automata] 错误 1
这是 Makefile:
brians_brain_cellular_automata: brians_brain_cellular_automata.o brians_brain.o cell.o cell_grid.o
gcc -Wall brians_brain_cellular_automata.o brians_brain.o cell.o cell_grid.o
brians_brain_cellular_automata.o: brians_brain_cellular_automata.c brians_brain.o cell.o cell_grid.o
gcc -Wall -c brians_brain_cellular_automata.c brians_brain.o cell.o cell_grid.o
brians_brain.o: brians_brain.c cell_grid.o cell.o list.o
gcc -Wall -c brians_brain.c cell_grid.o cell.o list.o
cell_grid.o: cell_grid.c cell.o
gcc -Wall -c cell_grid.c cell.o
cell.o: cell.c
gcc -Wall -c cell.c
list.o: list.c cell.o
gcc -Wall -c list.c cell.o
假设标签被正确使用。
最让我困惑的是这个 Makefile 今天早些时候工作。我在其中一个依赖项中输入了一些代码,它开始这样做。我恢复了这些更改,但我仍然收到这些错误。我做错了什么?
【问题讨论】:
-
你确定这真的有效吗?
-c表示编译但不链接。因此,您的大多数规则都没有意义,因为.o文件用于链接,不应传递给-c命令行。 -
@kaylum 我明白你的意思。在这种情况下,创建所有目标文件,然后将它们正确链接在一起的最佳方法是什么?