Makefile 如何构建g++;生成文件

Makefile 如何构建g++;生成文件,makefile,g++,Makefile,G++,上次我问了一些关于如何使用CLAPACK的问题。 在那之后,我试着把所有的东西分开,以便进行一个更大的项目 现在我有了“blitzLA.cpp”“InterfaceCLAPACK.cpp”“InterfaceCLAPACK.hpp” 我只要打个电话就可以成功地让它工作 g++ -Wall -g InterfaceCLAPACK.cpp blitzLA.cpp -llapack -lblas -lf2c -o blitzLA 但是如果我做Makefile,它会给我一些错误。。我的makefil

上次我问了一些关于如何使用CLAPACK的问题。

在那之后,我试着把所有的东西分开,以便进行一个更大的项目

现在我有了“blitzLA.cpp”“InterfaceCLAPACK.cpp”“InterfaceCLAPACK.hpp”

我只要打个电话就可以成功地让它工作

g++ -Wall -g InterfaceCLAPACK.cpp blitzLA.cpp -llapack -lblas -lf2c -o blitzLA
但是如果我做Makefile,它会给我一些错误。。我的makefile如下所示

CC = g++
CFLAGS = -Wall -g
linker = -llapack -lblas -lf2c
blitzLA: blitzLA.o InterfaceCLAPACK.o 
    ${CC} ${CFLAGS} InterfaceCLAPACK.o blitzLA.o -o blitzLA
blitzLA.o: blitzLA.cpp InterfaceCLAPACK.hpp
    ${CC} ${CFLAGS} ${linker} -c blitzLA.cpp
InterfaceCLAPACK.o: InterfaceCLAPACK.cpp InterfaceCLAPACK.hpp
    ${CC} ${CFLAGS} ${linker} -c InterfaceCLAPACK.cpp
clean:  
    rm -rf *.o blitzLA
g++ -Wall -g -llapack -lblas -lf2c -c blitzLA.cpp
g++ -Wall -g -llapack -lblas -lf2c -c InterfaceCLAPACK.cpp
g++ -Wall -g InterfaceCLAPACK.o blitzLA.o -o blitzLA
InterfaceCLAPACK.o: In function `quantfin::interfaceCLAPACK::SolveLinear(blitz::Array<double, 2> 
我想问题是我应该把“-llapack-lblas-lf2c”放在哪里。现在我得到如下所示的错误

CC = g++
CFLAGS = -Wall -g
linker = -llapack -lblas -lf2c
blitzLA: blitzLA.o InterfaceCLAPACK.o 
    ${CC} ${CFLAGS} InterfaceCLAPACK.o blitzLA.o -o blitzLA
blitzLA.o: blitzLA.cpp InterfaceCLAPACK.hpp
    ${CC} ${CFLAGS} ${linker} -c blitzLA.cpp
InterfaceCLAPACK.o: InterfaceCLAPACK.cpp InterfaceCLAPACK.hpp
    ${CC} ${CFLAGS} ${linker} -c InterfaceCLAPACK.cpp
clean:  
    rm -rf *.o blitzLA
g++ -Wall -g -llapack -lblas -lf2c -c blitzLA.cpp
g++ -Wall -g -llapack -lblas -lf2c -c InterfaceCLAPACK.cpp
g++ -Wall -g InterfaceCLAPACK.o blitzLA.o -o blitzLA
InterfaceCLAPACK.o: In function `quantfin::interfaceCLAPACK::SolveLinear(blitz::Array<double, 2> 

我哪里出错了。。Help plz

您得到的错误是什么?@MoKi现在我在Makefile中只有两个${linker},如上所示。调用make后我得到。。。。InterfaceCLAPACK.o:在函数“…中未定义对“dgttrf”的引用…因此问题无法链接correctly@MoKi错误已更新。我想应该在这里添加“-llapack-lblas-lf2c”(都是静态locak.a文件)
$`gcc-print prog name=cc1plus`-v
使用此选项查看编译器的搜索路径。链接行上需要
${linker}
。现在,它们在编译行上,这对您没有任何帮助。将其从两个
.o
目标体中移除,并将其添加到
blitzLA
目标体中。