是否可以在Mac OS X上编译SLATEC库?

时间:2017-09-13 14:53:35

标签: macos fortran

我正在拼命尝试在我的Mac OS Sierra 10.12.6上安装Fortran库SLATEC,但我无法使其正常工作。我使用GCC编译器。

我的确切步骤是:

valueFromSearch(value: string) {
 // handle the changed 'value' based on required logic
}

$ mkdir slatec $ cd slatec $ cp ~/Downloads/slatec_src.tar . $ tar xopf slatec_src.tar $ cd src 文件夹中,它不存在任何makefile。所以我(尝试)下载slatec4linux.tar。

src

这不起作用。错误讯息:

$ cp ~/Downloads/slatec4linux.tar . 
$ tar xopf slatec4linux.tar
$ cd slatec4linux 
$ sudo make install 

我不知道有谁在Mac上完成了安装。

2 个答案:

答案 0 :(得分:1)

确保安装gfortran

http://www.owsiak.org/?p=3492

确保下载源代码和linux makefile,并将所有文件放在同一级别。

在同一级别上说,我的意思是来自 slatec_src.tgz *.f以及makefiledynamic的所有static个文件来自 slatec4linux.tgz 在同一个目录中。

http://www.netlib.org/slatec/slatec_src.tgz

http://www.netlib.org/slatec/slatec4linux.tgz

确保导出FC变量

export FC=gfortran

确保在dynamic / makefile

中更改此行
libslatec.so: $(OBJ)
  $(CC) -shared -o $@ $(OBJ)

libslatec.so: $(OBJ)
  $(FC) -shared -o $@ $(OBJ)

致电

make

等一下。看看staticdynamic,文件应该在那里。

find . -name "libslatec*"
./dynamic/libslatec.so
./static/libslatec.a

现在,您可以尝试执行make install(注意这里会覆盖硬编码的位置)。或者,您可以使用-L${WHERE_YOUR_BUILD_WAS_DONE}/dynamic -lslatec

安装LAPAC

mkdir lapack
cd lapack
curl "http://www.netlib.org/lapack/lapack-3.7.1.tgz" -o lapack-3.7.1.tgz
tar zxf lapack-3.7.1.tgz
cd lapack-3.7.1
ln -s make.inc.example make.inc
make

你会在 lapack-3.7.1 中找到 liblapack.a 。您可以将其与您的代码链接。

与Fortran玩得开心!

答案 1 :(得分:0)

我遵循了mko的回答,但我收到了以下错误:

Undefined symbols for architecture x86_64:
  "_dlamch_", referenced from:
      _d1mach_ in d1mach.o
  "_slamch_", referenced from:
      _r1mach_ in r1mach.o
ld: symbol(s) not found for architecture x86_64

显然,dlamchslamch是Lapack库中的程序。要在./dynamic/makefile中修复它,请更改:

libslatec.so: $(OBJ)
    $(FC) -shared -o $@ $(OBJ)

为:

libslatec.so: $(OBJ)
    $(FC) -L$(WHERE_LAPACK_IS_INSTALLED) -llapack -shared -o $@ $(OBJ)