计算化学公社

标题: 调用cblas makefile 怎么写? [打印本页]

作者
Author:
最爱喵星人    时间: 2019-3-19 01:14
标题: 调用cblas makefile 怎么写?
我的makefile如下
CXX=g++
CFLAGS= -O3
GF=gfortran
BLLIB=lib/libblas.a
CBLIB=lib/cblas_LINUX.a
Objects=Main.o\
        Matrix.o\

mycode:$(Objects)
                $(CXX) $(CFLAGS) -o mycode $(Objects)
Main.o:Main.cpp
                $(CXX) $(CFLAGS) -c Main.cpp -o Main.o
Matrix:Matrix.cpp Matrix.h
                $(CXX) $(CFLAGS) -c -Iinclude Matrix.cpp
                gfortran -o cblas Matrix.o $(CBLIB) $(BLLIB)

请问怎么正确链接cblas的静态库?用上面的makefile编译得到以下的错误提示:
g++ -O3 -o mycode Main.o Matrix.o
Matrix.o: In function `CMatrix::operator*(CMatrix const&) const':
Matrix.cpp:(.text+0xbb8): undefined reference to `cblas_dgemm'
collect2: error: ld returned 1 exit status
Makefile:10: recipe for target 'mycode' failed

文件说明:
cblas.h 在 ./include/
cblas_LINUX.a 和libblas.a在 ./lib/
其他cpp文件和makefile 文件在 ./


作者
Author:
bluewhale    时间: 2019-3-19 14:58
当成.o文件直接写在后面即可,
$(CBLIB) $(BLLIB) => $(CBLIB)/cblas_LINUX.a  $(BLLIB)/libblas.a
作者
Author:
最爱喵星人    时间: 2019-3-19 15:36
bluewhale 发表于 2019-3-19 14:58
当成.o文件直接写在后面即可,
$(CBLIB) $(BLLIB) => $(CBLIB)/cblas_LINUX.a  $(BLLIB)/libblas.a

谢谢。但是我的BLLIB 和CBLIB已经制定了静态库,不只是路径。
作者
Author:
最爱喵星人    时间: 2019-3-19 20:26
调通了。
改成一下即可。
CXX=g++
CFLAGS= -O3
GF=gfortran
BLLIB=lib/libblas.a
CBLIB=lib/cblas_LINUX.a
Objects=Main.o\
        Matrix.o\

mycode:$(Objects)
                $(CXX) $(CFLAGS) -o mycode $(Objects) $(CBLIB) $(BLLIB)
Main.o:Main.cpp
                $(CXX) $(CFLAGS) -c Main.cpp -o Main.o
Matrix:Matrix.cpp Matrix.h
                $(CXX) $(CFLAGS) -c -Iinclude Matrix.cpp
              




欢迎光临 计算化学公社 (http://bbs.keinsci.com/) Powered by Discuz! X3.3