gpt4 book ai didi

C Makefile 故障 : "gcc: -lm: linker input file unused because linking not done mpicc -lm 3D-ELM.o -o 3D-ELM.exe"

转载 作者:太空狗 更新时间:2023-10-29 14:59:18 27 4
gpt4 key购买 nike

我在使用 C Makefile 时遇到了一些问题。

Makefile 的内容如下:

PROJECT = 3D-ELM
MPICC = mpicc
CLAGS = -g -O3
LIBS = -lm
SRC = src_el
OBJECTS = $(PROJECT).o

$(PROJECT).exe : $(OBJECTS)
$(MPICC) $(CFLAGS) $(LIBS) $(OBJECTS) -o $(PROJECT).exe

$(PROJECT).o : $(SRC)/$(PROJECT).c
$(MPICC) $(CFLAGS) $(LIBS) -c $(SRC)/$(PROJECT).c

clean:
rm -rf *o $(PROJECT)

当我制作时,这是错误:

gcc: -lm: linker input file unused because linking not done

谁知道这是怎么回事?

非常感谢,


编辑:知道了。制作目标文件时我不需要传递库... Doh! 刘海头离办公 table

感谢大家的帮助,

最佳答案

问题出在makefile的这一部分:

$(PROJECT).o : $(SRC)/$(PROJECT).c
$(MPICC) $(CFLAGS) $(LIBS) -c $(SRC)/$(PROJECT).c

在此步骤中,您仅调用编译器。 -c 开关告诉编译器只编译成目标文件,而链接器根本不参与。由于没有任何链接,因此 $(LIBS) 部分是不必要的。

实际链接在以下阶段完成:

$(PROJECT).exe : $(OBJECTS)
$(MPICC) $(CFLAGS) $(LIBS) $(OBJECTS) -o $(PROJECT).exe

这是将各个目标文件与库合并在一起以生成可执行文件的地方。此时不会调用编译器本身,因为源文件已经转换为目标文件。

关于C Makefile 故障 : "gcc: -lm: linker input file unused because linking not done mpicc -lm 3D-ELM.o -o 3D-ELM.exe",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15133343/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com