我正在 cygwin 中安装 Titan2d 软件(来自布法罗大学地球物理质量流量组),我创建了一个目录 titan-3.0.0(3.0.0 是最新版本),在这个目录下我运行 $ sh install-titan.sh
此脚本将自动检查 MPI 和 HDF5 的安装情况。如果在标准位置未找到 MPI,则系统将提示用户输入其绝对路径,或退出安装。如果此脚本无法找到 HDF5,则系统将提示用户输入其绝对路径,或继续而不安装 HDF5。
在安装过程中我收到此错误:
$ sh install-titan.sh
/usr
checking for a BSD-compatible install... /usr/bin/install -c
checking whether build environment is sane... yes
checking for gawk... gawk
checking whether make sets $(MAKE)... yes
checking for C++ compiler default output file name... a.exe
checking whether the C++ compiler works... yes
checking whether we are cross compiling... no
checking for suffix of executables... .exe
checking for suffix of object files... o
checking whether we are using the GNU C++ compiler... yes
checking whether /usr/local/bin/mpiCC accepts -g... yes
checking for style of include used by make... GNU
checking dependency style of /usr/local/bin/mpiCC... gcc3
checking for gcc... /usr/local/bin/mpicc
checking whether we are using the GNU C compiler... yes
checking whether /usr/local/bin/mpicc accepts -g... yes
checking for /usr/local/bin/mpicc option to accept ANSI C... none needed
checking dependency style of /usr/local/bin/mpicc... gcc3
checking for g77... g77 checking whether we are using the GNU Fortran 77 compiler... yes
checking whether g77 accepts -g... yes
checking how to run the C preprocessor... /usr/local/bin/mpicc -E
checking for a BSD-compatible install... /usr/bin/install -c
checking whether ln -s works... yes checking whether make sets $(MAKE)... (cached) yes checking for ranlib... ranlib checking how to get verbose linking output from g77... -v checking for Fortran libraries of g77... -L/usr/lib/gcc/i686-pc-cygwin/3.4.4 -L/usr/lib/gcc/i686-pc-cygwin/3.4.4/../../.. -lfrtbegin -lg2c -lcygwin -luser32 -lkernel32 -ladvapi32 -lshell32
checking for special C compiler options needed for large files... no
checking for _FILE_OFFSET_BITS value needed for large files... no
checking for _LARGE_FILES value needed for large files... no
checking build system type... i686-pc-cygwin
checking host system type... i686-pc-cygwin
checking for pthread_create in -lpthread... yes
checking for pkg-config... /usr/local/bin/pkg-config
checking pkg-config is at least version 0.9.0... yes
checking for MPICH2... configure: error: Package requirements (mpich2-ch3) were not met:
Variable 'exec_prefix' not defined in '/usr/local/lib/pkgconfig/mpich2-ch3.pc'
Consider adjusting the PKG_CONFIG_PATH environment variable if you installed software in a non-standard prefix.
Alternatively, you may set the environment variables MPICH2_CFLAGS and MPICH2_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details.
make: * No targets specified and no makefile found. Stop. make: Nothing to be done for `install'.
我已经从 cygwin 设置中安装了 openmpi,我选择了完整包安装,因此一系列 mpi 包会自动下载和安装,并且我下载了最新版本的 mpich-3.0.2 和旧版本 mpich2-1.2.1p1,然后使用 configure、make、make install 在 cygwin 中安装。但是,titan2d 安装错误告诉我包要求 (mpich2-ch3) 未得到满足。我从 titan2d 用户指南中知道“如果您的机器上有多个 MPI 副本,此脚本将查找并使用您路径中的第一个副本”。我不明白为什么我的安装会出现此错误。任何帮助都将不胜感激
答案1
您应该尝试导出环境变量,使用export MPICH2_LIBS="/usr/lib"
。有时在 cygwin 中,软件包库会放入 /usr/lib 和 /usr/local/lib,具体取决于所涉及的安装系统。如果它也找不到“include”(头文件文件夹),它应该会告诉您要设置哪些环境变量,就像以前一样。
您还可以编辑 install.sh 并找到其运行的位置configure
,然后添加以下开关
--prefix=/usr
前缀应将以下内容和更多内容设置
--libdir=/usr/lib --includedir=/usr/include --libexecdir=/usr/libexec --sbindir=/usr/sbin
为而不是“/usr/local”。但是,这是一个更全局的选项,因此如果某些文件在 /usr/local/* 中可用,则它们可能在 /usr/* 中不可用,因此您将扭转问题。最好单独解决其中一个问题,因为 /usr 或 /usr/local 可能有您需要的更多软件包。但我不是专家!
因此 install.sh 中的行应该类似于./configure --prefix=/usr
大多数情况下,configure 会将上述选项作为 Makefile 中的正确 make 标志发送。