首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >“制造”错误:设置编译路径

“制造”错误:设置编译路径
EN

Stack Overflow用户
提问于 2013-05-16 15:37:40
回答 1查看 308关注 0票数 0

我在编译netCDF库(并行版本)时遇到了问题。

特别是,这个问题与我猜想的不同路径有关。问题是我不是机器的管理员。但是,已经在自己的目录中安装了一个旧版本(这里是: /root/treiber)。

我想在/home/stephcar/bin中安装一个自己版本的loacal。

因此,我使用不同的编译器标志来指定目录:

代码语言:javascript
复制
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”中的错误:

代码语言:javascript
复制
/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/中的一个。

EN

回答 1

Stack Overflow用户

发布于 2013-05-16 16:03:39

首先,通常不希望使用bin目录作为prefix。在UNIX中,bin目录包含您运行的二进制文件:mkdirlsgcc等命令。您并不期望它包含bin/binbin/lib等子目录。它可以工作,但不标准。YOu应该使用--prefix=/home/stephcar,它会将东西放入/home/stephcar/bin/home/stephcar/lib等,或者更好的是,为这个包创建一个子目录,并使用它:--prefix=/home/stephcar/netcdf或其他东西。

第二,我假设示例行上的这是一个错误:

代码语言:javascript
复制
LIBS='-L/home stephcar/bin/lib ...

(请注意空格),您确实使用了:

代码语言:javascript
复制
LIBS='-L/home/stephcar/bin/lib ...

第三,通常倾向于在configure命令行中而不是在其环境中设置这些变量;也就是说,将它们放在配置命令之后而不是之前:

代码语言:javascript
复制
./configure --enable-pnetcdf --prefix=/home/stephcar/bin CPPFLAGS=-I/home/stephcar/bin/include LDFLAGS=-L...

除此之外,此错误意味着您的构建将在/root/treiber子目录中找到不可读的libhdf5_hl库。我怀疑这个系统上的管理员做错了什么,试图在一个地方构建这个库,然后以一种无效的方式将它复制到另一个地方。您还需要重新构建这个HDF5包,看起来是这样的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16591788

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档