我有Windows 7操作系统。 我按照PETSc web page的说明进行了操作;在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:在函数
_start': (.text+0x1bc4): multiple definition of
_ start'中 /usr/lib/gcc/x86_64-linux-gnu/4.6/../../../x86_64-linux-gnu/crt1.o:(.text+0x0):首先在这里定义 ex2:在函数_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'的多重定义 /usr/lib/gcc/x86_64-linux-gnu/4.6/../../../x86_64-linux-gnu/crti.o:(.init+0x0):首先在这里定义 collect2:ld返回1退出状态
答案 0 :(得分:0)
如PETSc web page部分遇到问题?部分所述,与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}
为空,因此{{ 1}}尝试包含make
,/conf/variables
& /conf/rules
个不存在的文件。
如何解决?
您必须按照网站上的说明运行/conf/test
make
在此之前,您需要正确构建源。要澄清你在问题make PETSC_DIR=<dir_output_from_configure> PETSC_ARCH=<arch_output_from_configure> ex2
中提到的内容,不会安装PETSc,只会配置构建源。您需要运行./configure ...
。如果成功运行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
。这将构建库。现在您应该能够构建示例了。 (请注意,这是在Linux上运行的,你应该能够在cygwin上做同样的事情)
附注:似乎没有必要设置configure
来构建示例,您应该能够使用PETSC_ARCH
构建
希望这有帮助!
答案 1 :(得分:0)
我遇到了同样的问题。你只需要一个修复。在显示上述错误的makefile中,只需在makefile中为PETSC_DIR
变量赋值。例如,对我来说是
PETSC_DIR = /用户/ kanikas /文档/研究/ PETSc的/ PETSc的-3.5.2
注意:PETSC_DIR
应该是petsc的根目录。
答案 2 :(得分:0)
我正在直接在〜/ .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位)