我正在拼命尝试在我的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上完成了安装。
答案 0 :(得分:1)
确保安装gfortran
确保下载源代码和linux makefile,并将所有文件放在同一级别。
在同一级别上说,我的意思是来自 slatec_src.tgz 和*.f
以及makefile
和dynamic
的所有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
等一下。看看static
和dynamic
,文件应该在那里。
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
显然,dlamch
和slamch
是Lapack库中的程序。要在./dynamic/makefile
中修复它,请更改:
libslatec.so: $(OBJ)
$(FC) -shared -o $@ $(OBJ)
为:
libslatec.so: $(OBJ)
$(FC) -L$(WHERE_LAPACK_IS_INSTALLED) -llapack -shared -o $@ $(OBJ)