我希望編譯使用LAPACK
和BLAS
中的函數的Fortran
源代碼。當我編譯單個源代碼文件時使用Accelerate Framework編譯Fortran源代碼(LAPACK和BLAS)
gfortran -g -framework accelerate test.f
它的工作原理。
但是,我有很多源代碼文件,我想編譯通過Makefile
。當我修改我Makefile
加入:
LDFLAGS= -framework Accelerate
(不知道這是正確的方式,但是這是一個人怎麼好像做) 我得到的錯誤是內部使用的LAPACK功能無法識別。
有人能告訴我在makefile中做什麼修改嗎?
這裏是我的錯誤:
gfortran -g test.o -o a.out
Undefined symbols for architecture x86_64:
"_sgesv_", referenced from:
_MAIN__ in test.o
ld: symbol(s) not found for architecture x86_64
collect2: error: ld returned 1 exit status
make: *** [a.out] Error 1
sgesv是被調用的子程序LAPACK應計入在veclib /加速框架。
這裏是我的Makefile文件的副本:
#
#
#
#FFLAGS = -fast
#FFLAGS = gfortran
FC = gfortran
LFLAGS = gfortran -g
LINK = gfortran -g
LDFLAGS = -framework Accelerate
OBJECTS = test.o\
SOURCES = test.f\
a.out: $(OBJECTS)
$(LINK) $(OBJECTS) -o a.out
對於其他人:
這裏是我做錯了。最後一行應改變: $(LINK)$(對象)-o a.out的$(LDFLAGS)
也許張貼您收到確切的錯誤信息。 –
大寫字母不重要(注意'加速'和'加速')?你一定要發佈錯誤信息。 –
@Vladimir F,我認爲這裏大寫不重要。但只是爲了確保我將它們都更改爲大寫和小寫,甚至嘗試了我從終端兩種方式運行的示例。它無論如何工作。 –