【发布时间】:2017-03-30 00:54:51
【问题描述】:
我的老师不擅长解释 C,所以我在理解 makefile 的连接时遇到了一些麻烦。我已经添加了 complex.c、complex.h 和 main.c 的代码。我只是在使用 make 命令编译它时遇到了麻烦。我按照他提交的 powerpoint 上的示例进行操作,但我不明白为什么它没有变得复杂。
制作文件
complex: main.o complex.o
gcc -o complex main.o complex.o
main.o: main.c complex.h
gcc -c main.c -lm
complex.o: complex.c complex.h
gcc -c complex.c -lm
clean:
rm*.o complex
ls
main.o
main.o: complex.h
gcc -c main.c
复杂的.o
complex.o: complex.h
gcc -c complex.c
错误
mason% make
gcc -o complex main.o complex.o
ld: fatal: file main.o: unknown file type
ld: fatal: file processing errors. No output written to complex
collect2: error: ld returned 1 exit status
*** Error code 1
make: Fatal error: Command failed for target `complex'
【问题讨论】:
-
gcc不会将main.o识别为目标文件似乎很奇怪。您在什么环境(操作系统等)上运行它? -
@Dolda2000 我用的是mac
-
您应该每次都运行
make clean。看起来main.o存在,但系统错误或已损坏(或不正确)。 -
我认为这实际上并不重要,但您应该将库参数(即
-lm,即)提供给生成可执行文件的命令,而不是生成目标文件的命令.只是为了排除它,请纠正它,看看它是否有所作为。还有@SteveHarris 所说的。 -
@struggling:
-lm确实可以让您使用math.h中的函数,但我的意思是它必须继续执行生成最终可执行文件的命令(其中缺少你的makefile),而不是产生目标文件的命令(你的makefile有它)。
标签: c makefile compiler-errors