我想使用需要lapack的软件才能正确编译。但我无法在Mac上进行lapack工作。
我正在尝试安装lapack-3.7.1
我输入make
,此消息到达:
make: *** No rule to make target `lsame.o', needed by `testlsame'. Stop.
我试图修改make.inc,但似乎我在互联网上看到的一些说明没有更新。我看到我们必须将PLAT更改为PLAT = _DARWIN。
http://www.commonmediainc.com/2008/03/24/building-lapack-and-rubys-linalg-on-mac-os-x/
我在make.inc文件中看不到它。
是否有一些分步说明来安装lapack?
make.inc文件:
####################################################################
# LAPACK make include file. #
# LAPACK, Version 3.7.0 #
# December 2016 #
####################################################################
SHELL = /bin/sh
# CC is the C compiler, normally invoked with options CFLAGS.
#
CC = gcc
CFLAGS = -O3
# Modify the FORTRAN and OPTS definitions to refer to the compiler
# and desired compiler options for your machine. NOOPT refers to
# the compiler options desired when NO OPTIMIZATION is selected.
#
# Note: During a regular execution, LAPACK might create NaN and Inf
# and handle these quantities appropriately. As a consequence, one
# should not compile LAPACK with flags such as -ffpe-trap=overflow.
#
FORTRAN = gfortran
OPTS = -O2 -frecursive
DRVOPTS = $(OPTS)
NOOPT = -O0 -frecursive
# Define LOADER and LOADOPTS to refer to the loader and desired
# load options for your machine.
#
LOADER = gfortran
LOADOPTS =
# The archiver and the flag(s) to use when building an archive
# (library). If your system has no ranlib, set RANLIB = echo.
#
ARCH = ar
ARCHFLAGS = cr
RANLIB = ranlib
# Timer for the SECOND and DSECND routines
#
# Default: SECOND and DSECND will use a call to the
# EXTERNAL FUNCTION ETIME
#TIMER = EXT_ETIME
# For RS6K: SECOND and DSECND will use a call to the
# EXTERNAL FUNCTION ETIME_
#TIMER = EXT_ETIME_
# For gfortran compiler: SECOND and DSECND will use a call to the
# INTERNAL FUNCTION ETIME
TIMER = INT_ETIME
# If your Fortran compiler does not provide etime (like Nag Fortran
# Compiler, etc...) SECOND and DSECND will use a call to the
# INTERNAL FUNCTION CPU_TIME
#TIMER = INT_CPU_TIME
# If none of these work, you can use the NONE value.
# In that case, SECOND and DSECND will always return 0.
#TIMER = NONE
# Uncomment the following line to include deprecated routines in
# the LAPACK library.
#
#BUILD_DEPRECATED = Yes
# LAPACKE has the interface to some routines from tmglib.
# If LAPACKE_WITH_TMG is defined, add those routines to LAPACKE.
#
#LAPACKE_WITH_TMG = Yes
# Location of the extended-precision BLAS (XBLAS) Fortran library
# used for building and testing extended-precision routines. The
# relevant routines will be compiled and XBLAS will be linked only
# if USEXBLAS is defined.
#
#USEXBLAS = Yes
#XBLASLIB = -lxblas
# The location of the libraries to which you will link. (The
# machine-specific, optimized BLAS library should be used whenever
# possible.)
#
BLASLIB = ../../librefblas.a
CBLASLIB = ../../libcblas.a
LAPACKLIB = liblapack.a
TMGLIB = libtmglib.a
LAPACKELIB = liblapacke.a
Makefile:
include ./make.inc
all: testlsame testslamch testdlamch testsecond testdsecnd testieee testversion
testlsame: lsame.o lsametst.o
$(LOADER) $(LOADOPTS) -o $@ $^
testslamch: slamch.o lsame.o slamchtst.o
$(LOADER) $(LOADOPTS) -o $@ $^
testdlamch: dlamch.o lsame.o dlamchtst.o
$(LOADER) $(LOADOPTS) -o $@ $^
testsecond: second_$(TIMER).o secondtst.o
@echo "[INFO] : TIMER value: $(TIMER) (given by make.inc)"
$(LOADER) $(LOADOPTS) -o $@ $^
testdsecnd: dsecnd_$(TIMER).o dsecndtst.o
@echo "[INFO] : TIMER value: $(TIMER) (given by make.inc)"
$(LOADER) $(LOADOPTS) -o $@ $^
testieee: tstiee.o
$(LOADER) $(LOADOPTS) -o $@ $^
testversion: ilaver.o LAPACK_version.o
$(LOADER) $(LOADOPTS) -o $@ $^
run: all
./testlsame
./testslamch
./testdlamch
./testsecond
./testdsecnd
./testieee
./testversion
clean: cleanobj cleanexe cleantest
cleanobj:
rm -f *.o
cleanexe:
rm -f test*
cleantest:
rm -f core
.SUFFIXES: .o .f
.f.o:
$(FORTRAN) $(OPTS) -c -o $@ $<
slamch.o: slamch.f ; $(FORTRAN) $(NOOPT) -c -o $@ $<
dlamch.o: dlamch.f ; $(FORTRAN) $(NOOPT) -c -o $@ $<
我已经尝试过Homebrew,但它无法正常工作:
brew install lapack
Error: No available formula with the name "lapack"
==> Searching for similarly named formulae...
Error: No similarly named formulae found.
==> Searching taps...
This formula was found in a tap:
homebrew/science/lapack-manpages
To install it, run:
brew install homebrew/science/lapack-manpages
但即使brew install homebrew/science/lapack-manpages
也无效......
Homebrew 0.9.9 (git revision 1158; last commit 2016-07-20)
Homebrew/homebrew-core (git revision f7372; last commit 2016-07-20)
答案 0 :(得分:1)
macOS的较新版本(包括10.11)随附vecLib中包含的LAPACK实现,该实现包含在macOS中。因此,如果您的软件支持vecLib,则可能根本不需要安装LAPACK。
如果您需要安装单独的LAPACK,它现在可以作为Homebrew核心中的Homebrew公式使用。因此brew install lapack
现在可以正常工作。
Homebrew lapack
公式当前包含适用于OS X 10.11的预构建二进制“瓶”,因此安装应该简单快捷。
答案 1 :(得分:-1)
尝试
Brew cask install lapack
或
Brew cask install Mac ports;port install lapack