我有Windows 7操作系统。我遵循了PETSc网页的指示;在VS 2005的命令提示符中,我打开了cygwin并使用以下命令安装了PETSc:
./configure --with-cc='win32fe cl' --with-fc=0 --with-mpi=0 --download-f2cblaslapack我试图从网页上运行以下示例:
cd src/ksp/ksp/examples/tutorials
make ex2ex2.c是一个c程序代码。我得到以下错误:
$ make ex2
makefile:18: /conf/variables: No such file or directory
makefile:19: /conf/rules: No such file or directory
makefile:1151: /conf/test: No such file or directory
make: *** No rule to make target `/conf/test'. Stop.是什么引起的?
(更重要的是)我该如何修复它?
*编辑:我也可以使用一个一般性的答案,因为目前我甚至不知道谷歌的目的是什么,我不想仅仅联系PETSc支持的一切。
我决定在Ubuntu上工作。现在,我们来谈一谈。安装后,我写道:
gcc -I$PETSC_DIR/包括-L$PETSC_DIR/$PETSC_ARCH/lib -libpetsc ex2
在命令行。我得到了错误按摩:
/usr/bin/ld:无法找到-libpetsc ex2: In function
_start': (.text+0x1bc4): multiple definition of_start‘ex2: In function_fini': (.fini+0x0): multiple definition of_fini’/usr/lib/gcc/x86_64-linux-gnu/4.6/../../../x86_64-linux-gnu/crti.o:(.fini+0x0):首先在这里定义ex2:(.rodata+0x0):_IO_stdin_used' /usr/lib/gcc/x86_64-linux-gnu/4.6/../../../x86_64-linux-gnu/crt1.o:(.rodata.cst4+0x0): first defined here ex2: In function__data_start的多个定义:(.data+0x0):__data_start' /usr/lib/gcc/x86_64-linux-gnu/4.6/../../../x86_64-linux-gnu/crt1.o:(.data+0x0): first defined here ex2: In function__data_start的多个定义:(.data+0x8):__dso_handle' /usr/lib/gcc/x86_64-linux-gnu/4.6/crtbegin.o:(.data+0x0): first defined here ex2: In function_init的多个定义:(.init+0x0):`_init‘__dso_handle' /usr/lib/gcc/x86_64-linux-gnu/4.6/crtbegin.o:(.data+0x0): first defined here ex2: In function的多个定义-gnu/crti.o:(.init+0x0):首先在这里定义collect2: ld返回1个退出状态
发布于 2012-07-05 17:47:49
正如在PETSc网页上提到的章节中遇到的问题?对于与make相关的问题,需要设置通过配置打印的PETSC_DIR和PETSC_ARCH。
是什么引起的?
makefile目录中的src/ksp/ksp/examples/tutorials引用PETSC_DIR来包含配置文件,即
include ${PETSC_DIR}/conf/variables
include ${PETSC_DIR}/conf/rules
...
include ${PETSC_DIR}/conf/test现在,当您将make作为make ex2执行(从错误中指示您没有设置PETSC_DIR变量)时,${PETSC_DIR}是空的,因此make尝试包含不存在的/conf/variables、/conf/rules和/conf/test文件。
我该怎么解决呢?
您必须按照网站上提到的那样运行make,如
make PETSC_DIR=<dir_output_from_configure> PETSC_ARCH=<arch_output_from_configure> ex2
在此之前,您需要正确构建源代码。为了澄清您在问题中提到的内容,./configure ...不安装PETSc,而只是配置构建的源代码。您需要运行make。当您成功运行configure时,它将输出包括PETSC_DIR和PETSC_ARCH在内的配置细节。样本输出:
./configure --with-mpi=0
===============================================================================
Configuring PETSc to compile on your system
===============================================================================
TESTING: alternateConfigureLibrary from PETSc.packages.petsc4py(config/PETSc/packages/petsc4py.py:65) Compilers:
...
...
PETSc:
PETSC_ARCH: arch-linux2-c-debug
PETSC_DIR: /XXXX/petsc-3.3-p1
Clanguage: C
Scalar type: real
Precision: double
shared libraries: disabled
dynamic loading: disabled
Memory alignment: 16
xxx=========================================================================xxx
Configure stage complete. Now build PETSc libraries with (cmake build):
make PETSC_DIR=/XXXX/petsc-3.3-p1 PETSC_ARCH=arch-linux2-c-debug all
or (experimental with python):
PETSC_DIR=/XXXX/petsc-3.3-p1 PETSC_ARCH=arch-linux2-c-debug ./config/builder.py
xxx=========================================================================xxx然后运行make PETSC_DIR=/XXXX/petsc-3.3-p1 PETSC_ARCH=arch-linux2-c-debug all,如configure输出中提到的那样。这将建立图书馆。现在,您应该能够构建这个示例了。(请注意,这是在Linux上运行的,您应该能够在cygwin上做同样的事情)
附带注意:似乎不需要设置PETSC_ARCH来构建示例,您应该能够使用make PETSC_DIR=<dir_output_from_configure> ex2进行构建。
希望这能有所帮助!
发布于 2015-03-06 20:58:23
我也有同样的问题。你只需要一个解决办法。在显示上述错误的makefile中,只需给出makefile中PETSC_DIR变量的值。例如,对我来说
PETSC_DIR=/Users/kanikas/Documents/research/petsc/petsc-3.5.2
注意:PETSC_DIR应该是petsc的根目录。
发布于 2017-10-30 21:06:52
我正在工作,直接在~/..bashrc中添加导出路径。这样我就不需要一遍又一遍地写这条路了。
sudo nano ~/.bashrc转到文件的最后一行:
#PETScXXX
export PETSC_DIR=/home/username/PETSc/petsc-3-8
export PETSC_ARCH=arch-linux2-c-debug每次启动shell时,都可以访问正确的petsc路径和库。
我希望这能对某人有所帮助。(运行Xubuntu 16.04 64位)
https://stackoverflow.com/questions/11331289
复制相似问题