PETSc示例不起作用
我有Windows7操作系统。 我遵守了来自政府的指示;在VS 2005的命令提示符中,我打开了cygwin并使用以下命令安装了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
./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:那么您能够构建和执行这些示例吗?如果没有,您可以发布控制台消息。也许有些事情可以解决我已经建立了这个例子,是的。谢谢。您可以将变量放在背景标记中,以便为其添加语法突出显示,同样,代码块也可以缩进四个空格:。