PETSc示例不起作用

PETSc示例不起作用,c,makefile,cygwin,petsc,C,Makefile,Cygwin,Petsc,我有Windows7操作系统。 我遵守了来自政府的指示;在VS 2005的命令提示符中,我打开了cygwin并使用以下命令安装了PETSc: ./configure --with-cc='win32fe cl' --with-fc=0 --with-mpi=0 --download-f2cblaslapack 我尝试从网页上运行以下示例: cd src/ksp/ksp/examples/tutorials make ex2 ex2.c是一个c程序代码。我得到以下错误: $ make ex2

我有Windows7操作系统。 我遵守了来自政府的指示;在VS 2005的命令提示符中,我打开了cygwin并使用以下命令安装了PETSc:

./configure --with-cc='win32fe cl' --with-fc=0 --with-mpi=0 --download-f2cblaslapack
我尝试从网页上运行以下示例:

cd src/ksp/ksp/examples/tutorials

make ex2
ex2.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:在函数
\u start'中:
(.text+0x1bc4):多重定义
\u start' /usr/lib/gcc/x86_64-linux-gnu/4.6/../../../../x86_64-linux-gnu/crt1.o:(.text+0x0):首先在此处定义 ex2:在函数
\u fini'中:
(.fini+0x0):多重定义
\u fini' /usr/lib/gcc/x86_64-linux-gnu/4.6/../../../../x86_64-linux-gnu/crti.o:(.fini+0x0):首先在此处定义 ex2:(.rodata+0x0):使用了
\u IO\u stdin\u的多个定义'
/usr/lib/gcc/x86_64-linux-gnu/4.6/../../../../x86_64-linux-gnu/crt1.o:(.rodata.cst4+0x0):首先在这里定义
ex2:在函数中
\u数据\u开始': (.data+0x0)
\u data\u start'的多个定义
/usr/lib/gcc/x86_64-linux-gnu/4.6/../../../../../x86_64-linux-gnu/crt1.o:(.data+0x0):首先在此处定义
ex2:在函数中
\u数据\u开始': (.data+0x8)
的多个定义
/usr/lib/gcc/x86_64-linux-gnu/4.6/crtbegin.o:(.data+0x0):首先在这里定义
ex2:在函数中
\u init': (.init+0x0)“\u init”的多个定义 /usr/lib/gcc/x86_64-linux-gnu/4.6/../../../../x86_64-linux-gnu/crti.o:(.init+0x0):首先在此处定义 collect2:ld返回了1个退出状态

如下面章节所述,遇到问题了吗?对于与
make
相关的问题,您需要设置configure打印的
PETSC\u DIR
PETSC\u ARCH

这是什么原因造成的?:
src/ksp/ksp/examples/tutorials
目录中的
makefile
引用
PETSC\u DIR
以包含配置文件,即

include ${PETSC_DIR}/conf/variables
include ${PETSC_DIR}/conf/rules

...
include ${PETSC_DIR}/conf/test
现在,当您像执行
make ex2
一样执行
make
(从错误中可以看出,您没有设置
PETSC\u DIR
变量),
${PETSC\u DIR}
为空,因此
make
尝试包含
/conf/variables
/conf/rules
&
/conf/test
不存在的文件

如何修复它?
您必须运行网站上提到的
make

make PETSC\u DIR=PETSC\u ARCH=ex2

在此之前,您需要正确构建源代码。为了澄清您在问题
/configure…
中提到的内容,不安装PETSc,而只配置用于构建的源代码。您需要运行
make
。当您运行
configure
时,如果成功,它将输出配置详细信息,包括
PETSC\u DIR
PETSC\u 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=ex2构建


希望这有帮助

我也有同样的问题。你只需要一次修复。在显示上述错误的makefile中,只需为makefile中的
PETSC_DIR
变量提供值。比如说,对我来说是

PETSC_DIR=/Users/kanikas/Documents/research/PETSC/PETSC-3.5.2


注意:
PETSC\u DIR
应该是PETSC的根目录。

我正在~/.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位)

很好。我忘了提。在运行上面提到的“/configure…”代码后,我按照提示要求执行了操作,即“make PETSC_DIR…”等。我甚至了解到库编译是成功的。之后,“makeex2”报告了我问题中提到的错误。现在,当我尝试运行“make PETSC_DIR…..ex2”并添加命令“PETSC_DIR…..”时,正如您所提到的,它至少对我有帮助(打印出一些文件夹的行)。我真的不知道我得到的是否正确,但这绝对不是一个错误。@user1487833:那么您能够构建和执行这些示例吗?如果没有,您可以发布控制台消息。也许有些事情可以解决我已经建立了这个例子,是的。谢谢。您可以将变量放在背景标记中,以便为其添加语法突出显示,同样,代码块也可以缩进四个空格:。