3

私はWindows 7 OSを持っています。PETSc Web ページの指示に従いました。VS 2005 のコマンド プロンプトで、次のコマンドを使用して cygwin を開き、PETSc をインストールしました。

./configure --with-cc='win32fe cl' --with-fc=0 --with-mpi=0 --download-f2cblaslapack

Web ページから次の例を実行しようとしました。

cd src/ksp/ksp/examples/tutorials

make ex2

ex2.c は ac プログラム コードです。次のエラーが表示されます。

$ 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.

これは何が原因ですか?

(そしてもっと重要なこと)どうすれば修正できますか?

*編集: 一般的な回答も使用できます。なぜなら、現時点では Google で何を検索すればよいかさえわからず、すべてについて PETSc サポートに連絡するだけでは気が進まないからです。


Ubuntuで作業することにしました。それでは、これが契約です。インストール後、次のように書きます。

gcc -I$PETSC_DIR/include -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 つの終了ステータスを返しました

4

3 に答える 3

2

PETScのWebページのセクションEncounterproblemsで述べたように関連する問題については、configureで設定および印刷する make必要があります。PETSC_DIRPETSC_ARCH

これを引き起こしているのは何ですか?:inディレクトリは、構成ファイルを含むことを意味します
makefilesrc/ksp/ksp/examples/tutorialsPETSC_DIR

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

...
include ${PETSC_DIR}/conf/test

(エラーから、変数を設定していないことを示しているので)実行makeしているので、空であるため、存在しないファイルを 含めようとします。make ex2PETSC_DIR${PETSC_DIR}make/conf/variables/conf/rules/conf/test

どうすれば修正できますか? ソースを正しく構築する必要がある前に、Webサイトに記載されているよう
に実行する必要があります。質問で述べたことから明確にするために、PETScをインストールせず、ビルドのソースを構成するだけです。を実行する必要があります。成功した場合に実行すると、およびを含む構成の詳細が出力されます。サンプル出力: make
make PETSC_DIR=<dir_output_from_configure> PETSC_ARCH=<arch_output_from_configure> ex2
./configure ...makeconfigurePETSC_DIRPETSC_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_ARCHmake PETSC_DIR=<dir_output_from_configure> ex2

お役に立てれば!

于 2012-07-05T17:47:49.950 に答える
1

私も同じ問題を抱えていました。修正が必要なのは 1 つだけです。上記のエラーを示すメイクファイルでは、PETSC_DIRメイクファイル内の変数の値を指定するだけです。たとえば、私にとっては

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

注:PETSC_DIRは、petsc のルート ディレクトリである必要があります。

于 2015-03-06T20:58:23.917 に答える