【问题标题】:Is it possible to install lapack on Mac OSX 10.11?是否可以在 Mac OSX 10.11 上安装 lapack?
【发布时间】:2019-01-24 13:22:51
【问题描述】:

我想使用需要lapack才能正确编译的软件。但我无法让 lapack 在 Mac 上工作。

http://www.netlib.org/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

生成文件:

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)

【问题讨论】:

标签: macos homebrew lapack


【解决方案1】:

较新版本的 macOS(包括 10.11)附带了包含在 macOS 中的vecLib 中的 LAPACK 实现。因此,如果您的软件支持 vecLib,您可能根本不需要安装 LAPACK。

如果您需要安装单独的 LAPACK,现在可以在 Homebrew 核心中以 Homebrew 公式的形式使用它。所以brew install lapack 现在可以工作了。

Homebrew lapack 公式目前包含一个用于 OS X 10.11 的预构建二进制“瓶子”,因此安装应该简单快捷。

【讨论】:

  • "为 lapack 安装依赖项:openssl@1.1、readline、sqlite、xz、python、sphinx-doc、cmake、isl、mpfr 和 gcc",哇。 (MacOS 10.10:“我们(和 Apple)不提供对这个旧版本的支持。”
【解决方案2】:

试试

Brew cask install lapack 

或者

Brew cask install Mac ports;port install lapack

【讨论】:

    猜你喜欢
    • 2019-12-15
    • 1970-01-01
    • 2015-10-12
    • 2016-03-27
    • 2016-02-02
    • 2021-03-21
    • 1970-01-01
    • 2016-05-10
    • 1970-01-01
    相关资源
    最近更新 更多