编译 netCDF 库(并行版)时遇到问题。
特别是问题与我猜的不同路径有关。问题是我不是机器管理员。但是,管理员自己已经在自己的目录(此处:/root/treiber)中安装了旧版本。
Tus 我想在 /home/stephcar/bin 中安装自己的本地版本。
因此,我规定了具有不同编译器标志的目录:
CPPFLAGS=-I/home/stephcar/bin/include LDFLAGS=-L/home/stephcar/bin/lib LIBS='-L/home stephcar/bin/lib -lnetcdf -L/home/stephcar/bin/lib -lhdf5_hl -lhdf5 -lz -lm -L/home/stephcar/bin/lib -lsz' CC=/home/stephcar/bin/bin/mpicc FC=/home/stephcar/bin/bin/mpif90 ./configure --enable-pnetcdf --prefix=/home/stephcar/bin/
另外:我还将我的 --prefix-path (/home/stephcar/bin/) 也放在 $PATH 和 $LD_LIBRARY_PATH 的第一个位置。
但是,由于某种原因,我无法弄清楚,搜索的是根目录(/root/treiber),而不是我的目录……这是来自“make”的错误:
/bin/sh ../libtool --tag=CC --mode=link /home/stephcar/bin/bin/mpicc -g -O2 -L/home/stephcar/bin/lib -o liboc.la
liboc_la-oc.lo liboc_la-daplex.lo liboc_la-dapparse.lo liboc_la-daptab.lo liboc_la- occlientparams.lo liboc_la-occompile.lo
liboc_la-occurlfunctions.lo liboc_la-ocdata.lo liboc_la-ocdebug.lo liboc_la-ocdump.lo liboc_la-ocinternal.lo liboc_la-ocnode.lo
liboc_la-ochttp.lo liboc_la-ocrc.lo liboc_la-ocread.lo liboc_la-ocutil.lo liboc_la-ocbytes.lo liboc_la-oclist.lo liboc_la-ocuri.lo
liboc_la-oclog.lo liboc_la-xxdr.lo -lpnetcdf -lm -L/home/stephcar/bin/lib -lnetcdf -L/home/stephcar/bin/lib -lhdf5_hl -lhdf5
-lz -lm -L/home/stephcar/bin/lib -lsz
/usr/bin/grep: /root/treiber/hdf5-1.8.8/hdf5/lib/libhdf5_hl.la: Permission denied
/usr/bin/sed: can't read /root/treiber/hdf5-1.8.8/hdf5/lib/libhdf5_hl.la: Permission denied
libtool: link: `/root/treiber/hdf5-1.8.8/hdf5/lib/libhdf5_hl.la' is not a valid libtool archive
make[2]: *** [liboc.la] Fehler 1
你有想法吗?我是否设置错误的标志?或者是否有另一个我没有看过的默认路径。如何在模式后的默认路径中搜索(此处:/root/treiber)?也许我可以在这里得到一个提示!
谢谢斯蒂芬
编辑只是为了澄清一下:netCDF 需要另一个库 hdf5,我已成功编译并安装到 ~/bin/lib 中。因此,丢失的 libhdf5_hl.la 也存储在那里。实际问题是我的配置环境没有找到这个目录。相反,它会尝试使用 /root/ 中的那个。