1

所以我正在尝试使用 macports 的 gnu4.7 在 osx 10.8.2 上编译 Atlas (BLAS+LAPACK)。作为记录,这是我使用的配置:

../path/to/configure --prefix=/opt/atlas \
--with-netlib-lapack-tarfile=/path/to/lapack-3.4.2.tgz \
--shared \
-b 64 \
-C acg gcc-mp-4.7 \
-C if gfortran-mp-4.7

它一直持续到最后,甚至创建了静态库,但未能构建动态库:

libtool -dynamic -o ../libsatlas.dylib \
    -install_name /opt/atlas/lib/libsatlas.dylib -version-info 3.10.0 \
    -compatibility_version 3.10.0 *.o -lpthread -lm -L/opt/local/lib/gcc47/gcc/x86_64-    apple-darwin12/4.7.2/../../.. -lgfortran 
libtool: unrecognized option `-dynamic'

这显然与 lib/Makefile 有关:

....
dylib:
rm -rf $(tmpd) ; mkdir $(tmpd)
cd $(tmpd) ; ar x ../liblapack.a 
cd $(tmpd) ; ar x ../libf77blas.a
cd $(tmpd) ; ar x ../libcblas.a 
cd $(tmpd) ; ar x ../libatlas.a
cd $(tmpd) ; $(LIBTOOL) -dynamic -o ../libsatlas.dylib \
    -install_name $(LIBINSTdir)/libsatlas.dylib -version-info $(VER) \
    -compatibility_version $(VER) *.o $(LIBS) $(F77SYSLIB)
rm -rf $(tmpd)
....

但是,我无法让它工作。我尝试添加“--mode=link”,但仍然失败。

如果有人可以提议修改 Atlas makefile,我将不胜感激。

p/s/ libtool 版本是:'libtool (GNU libtool) 2.4.2'

4

1 回答 1

0

问题解决了。

用过的

/usr/bin/libtool

而不是 gnu libtool,以及稍微修改了 make 文件:

cd $(tmpd) ; $(LIBTOOL) -dynamic -o ../libsatlas.dylib \
    -install_name $(LIBINSTdir)/libsatlas.dylib -current_version $(VER) \
    -compatibility_version $(VER) *.o $(LIBS) $(F77SYSLIB)

这样就产生了动态库。

于 2013-03-13T19:46:21.367 回答