【发布时间】:2011-10-05 02:13:30
【问题描述】:
对于一个项目,我正在与一位合作伙伴一起编写决策树实现。由于我们俩都是 C 的新手并且必须快速工作,因此我们基本上将所有功能转储到一个文件中,最终超过 1600 行。这是一个快速而肮脏的项目,但现在下一个任务让我们负责扩展和重新实现代码。在目前的情况下,这不会发生。
现在,我正在根据功能责任分解原始来源。问题是,许多功能交织在一起,我的 make 文件出现了重大错误。更具体地说,其他源文件正在报告在单独文件中声明的函数的隐式声明。
我真的没有使用多个文件 makefile 的经验。当前的语法是从去年系统编程课程中的一个简单的 shell 实现中借用的,尽管这个当前的项目在复杂性上要高一个数量级。
cc= gcc
CFLAGS= -g -Wall -lm
proj2: main.o split.o tree.o id3.o output.o
$(CC) $(CFLAGS) -o proj2 main.o split.o tree.o id3.o output.o
我也尝试过之前的版本,其中每个目标文件都是单独编译的,比如
main.o: main.c split.c tree.c id3.c output.c
$(CC) $(CFLAGS) -o main.c split.c tree.c id3.c output.c
然后重复此过程,为每个源创建一个.o 文件,然后将其编译为可执行文件。
但是,这不起作用,我收到了大约 500 行编译器投诉和警告,主要是关于隐式函数声明。
所以,基本上我有两个相关的问题:
- 是否可以在不同的源文件之间交织函数调用?
- 如果是这样,我怎样才能在这里实现?
【问题讨论】:
-
这是
-o main.c错字吗?它将用编译器的输出覆盖文件main.c。
标签: c compiler-errors makefile