我在编译netCDF库(并行版本)时遇到了问题。
特别是,这个问题与我猜想的不同路径有关。问题是我不是机器的管理员。但是,已经在自己的目录中安装了一个旧版本(这里是: /root/treiber)。
我想在/home/stephcar/bin中安装一个自己版本的loacal。
因此,我使用不同的编译器标志来指定目录:
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/此外:我还将我的-前缀-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/中的一个。
发布于 2013-05-16 16:03:39
首先,通常不希望使用bin目录作为prefix。在UNIX中,bin目录包含您运行的二进制文件:mkdir、ls、gcc等命令。您并不期望它包含bin/bin、bin/lib等子目录。它可以工作,但不标准。YOu应该使用--prefix=/home/stephcar,它会将东西放入/home/stephcar/bin、/home/stephcar/lib等,或者更好的是,为这个包创建一个子目录,并使用它:--prefix=/home/stephcar/netcdf或其他东西。
第二,我假设示例行上的这是一个错误:
LIBS='-L/home stephcar/bin/lib ...(请注意空格),您确实使用了:
LIBS='-L/home/stephcar/bin/lib ...第三,通常倾向于在configure命令行中而不是在其环境中设置这些变量;也就是说,将它们放在配置命令之后而不是之前:
./configure --enable-pnetcdf --prefix=/home/stephcar/bin CPPFLAGS=-I/home/stephcar/bin/include LDFLAGS=-L...除此之外,此错误意味着您的构建将在/root/treiber子目录中找到不可读的libhdf5_hl库。我怀疑这个系统上的管理员做错了什么,试图在一个地方构建这个库,然后以一种无效的方式将它复制到另一个地方。您还需要重新构建这个HDF5包,看起来是这样的。
https://stackoverflow.com/questions/16591788
复制相似问题