首页 > 解决方案 > 如何改变这个makefile的结构

问题描述

我是处理makefile的新手,并提供了这个:

demo: demo.cpp vegas.o ranlxd.o
    g++ -o demo demo.cpp vegas.o ranlxd.o -lgfortran

vegas.o: vegas.F
    gfortran -c vegas.F

ranlxd.o: ranlxd.c
    gcc -c ranlxd.c

clean:
    rm -f  vegas.o ranlxd.o

distclean: clean
    rm -f demo

我使用演示文件中的 vegas 和 ranlxd 文件中定义的函数。现在我想更改它,以便首先将所有代码文件转换为目标文件,然后最后链接,所以我尝试了以下操作:

demo: demo.o vegas.o ranlxd.o
    demo.o vegas.o ranlxd.o -lgfortran

demo.o: demo.cpp
        g++ -c demo.cpp

vegas.o: vegas.F
    gfortran -c vegas.F

ranlxd.o: ranlxd.c
    gcc -c ranlxd.c

clean:
    rm -f  vegas.o ranlxd.o

distclean: clean
    rm -f demo

这导致了错误

demo.o vegas.o ranlxd.o -lgfortran
make: demo.o: Command not found
make: *** [makefile:9: demo] Error 127

我做错了什么,为了首先编译所有代码文件,我必须改变什么?我非常感谢任何形式的帮助!

标签: makefile

解决方案


使用链接命令,您忘记实际调用链接器的程序

demo: demo.o vegas.o ranlxd.o
    demo.o vegas.o ranlxd.o -lgfortran

应该:

demo: demo.o vegas.o ranlxd.o
    g++ -o demo demo.o vegas.o ranlxd.o -lgfortran

推荐阅读