私はLinux初心者で、次のファイルをコンパイルしようとしています。DL_POLY_クラシック。 zipファイルをダウンロードしましたdl_class_1.6.tar.gzそしてcommandを使って解凍しますtar xvzf dl_class_1.6.tar.gz
。プログラムを操作するためのさまざまなファイルを含む一連のフォルダを提供します。手動。これらのディレクトリの1つは源泉たくさん含まれています。 F文書などのマニュアルでは、コードをコンパイルするには、サンプル/テンプレートのMakefileの1つを取得してパスを変更して、プログラムをコンパイラを含むmake
適切なディレクトリにリンクさせる必要があることを示しています。 (このDL_POLY_ClassicプログラムはFortranで書かれており、Fortran [Fortran 90と思います]を使用してコンパイルする必要があります。)
同僚の提案に従って、クラスタでIntel Fortranコンパイラ(ifort)を使用してこのコードをコンパイルしてみました。テンプレートMakefileでターゲットの1つを修正しました。これで、ターゲットのMakefileに次のテキストが含まれます。
#========== mpich-c2
mpich-c2: dpp
cp /opt/mpich/ch-p4/include/mpif.h mpif.h
$(MAKE) LD="/opt/mpich_intel/ch-p4/bin/mpif90 -O3 -o" \
LDFLAGS="-L/opt/mpich_intel/ch-p4/lib64 -lmpich" \
TIMER="" \
FC=/opt/intel_fc_80/bin/ifort \
FFLAGS="-c " \
MPICH_F90="/opt/mpich_intel/ch-p4/bin/mpif90" \
CPFLAGS="-D$(STRESS) -DMPI -P -D'pointer=integer'\
-I/opt/mpich_intel/ch-p4/include" \
EX=$(EX) BINROOT=$(BINROOT) $(TYPE)
Makefileを入れました。源泉目次はマニュアルの指示に従ってください。それからいつ源泉ディレクトリに次のコマンドを入力します。
make mpich-c2
ただし、次のエラー メッセージが表示されます。
cp /opt/mpich/ch-p4/include/mpif.h mpif.h
make LD="/opt/mpich_intel/ch-p4/bin/mpif90 -O3 -o" \
LDFLAGS="-L/opt/mpich_intel/ch-p4/lib64 -lmpich" \
TIMER="" \
FC=/opt/intel_fc_80/bin/ifort \
FFLAGS="-c " \
MPICH_F90="/opt/mpich_intel/ch-p4/bin/mpif90" \
CPFLAGS="-DSTRESS -DMPI -P -D'pointer=integer'\
-I/opt/mpich_intel/ch-p4/include" \
EX=D.X BINROOT=./ 3pt
make[1]: Entering directory `/export/home/myusername/dlc1_16/dl_class_1.6/source'
make[1]: *** No rule to make target `dl_params.inc', needed by `angfrc.o'. Stop.
make[1]: Leaving directory `/export/home/myusername/dlc1_16/dl_class_1.6/source'
make: *** [mpich-c2] Error 2
そのため、make
プログラムでは次のように言います。No rule to make target dl_params.inc, needed by angfrc.o.
私の質問は、ソフトウェアが私に何を教えてくれるかです。ファイルが見つからないと言えますか?dl_params.incまたは、ファイルが見つからないことを意味できます。angfrc.o?それともMakefileにどのようなコマンドを入れるべきですか?新しいファイル名はdl_params.inc?
私がMakefileを検索すると(私が言及したように、本質的に作成者が提供したテンプレートですが、mpich-c2
私がアクセスできる特定のFortranコンパイラ用に変更されたターゲットエントリのディレクトリのみがあります)、言及されたエントリだけが表示されます。dl_params.inc:
# Declare dependency on parameters file
$(OBJ_ALL): dl_params.inc
$(OBJ_RRR): dl_params.inc
$(OBJ_4PT): dl_params.inc
$(OBJ_RSQ): dl_params.inc
$(OBJ_NEU): dl_params.inc
$(OBJ_RIG): dl_params.inc
$(OBJ_EXT): dl_params.inc
$(OBJ_SPME): dl_params.inc
$(OBJ_HKE): dl_params.inc
これが何を意味するのかよく分からない。
一方、Makefileで検索するとangfrc.oOBJ_ALL
、次の最初の行(次)には1つの言及しか表示されません。
# Define object files
#=====================================================================
OBJ_ALL = angfrc.o bndfrc.o cfgscan.o corshl.o coul0.o coul4.o \
coul2.o coul3.o conscan.o dblstr.o dcell.o diffsn0.o \
diffsn1.o dlpoly.o duni.o error.o ewald1.o ewald3.o \
exclude.o exclude_atom.o fldscan.o exclude_link.o forces.o\
exitcomms.o extnfld.o fbpfrc.o fcap.o freeze.o gauss.o \
gdsum.o getrec.o gimax.o gisum.o gstate.o images.o initcomms.o \
intlist.o intstr.o invert.o invfrc.o jacobi.o lowcase.o lrcmetal.o \
lrcorrect.o machine.o merge.o merge1.o merge4.o \
npt_b1.o npt_b3.o parset.o npt_h1.o npt_h3.o nve_1.o \
nvt_b1.o nvt_e1.o nvt_h1.o parlst_nsq.o parlink.o parlst.o passcon.o \
passpmf.o pmf_1.o pmf_shake.o primlst.o quench.o rdf0.o rdf1.o \
rdshake_1.o result.o revive.o scdens.o shellsort.o shlfrc.o \
shlmerge.o shlqnch.o shmove.o simdef.o splice.o static.o strip.o \
strucopt.o sysdef.o sysgen.o systemp.o sysbook.o sysinit.o \
tethfrc.o thbfrc.o timchk.o traject.o vertest.o vscaleg.o \
warning.o xscale.o zden0.o zden1.o \
私もそれがどういう意味なのかよく分からない。
興味深いことに、コマンドを使用してfind
名前(たとえば、、、、find -name angfrc.o
などfind -name *.o
)で検索すると、find -name dl_params.inc
プログラムディレクトリにその名前のエントリが見つかりません。検索してfind -name *.inc
ファイルを見つけました。通信会社存在する源泉目次。この特定のファイルは、ヘッダーに「MPI、PVM、およびSHMEM用のdl_polyインクルードファイル」と表示されます。このファイルは比較的短いファイル(わずか42行の長さ)で、「メッセージラベルパラメータ」と「MPIラベルサイズ」が含まれているようです。しかし、ここで何を探すべきかわかりません。
時間があれば、私は次に何をしようとするのかをアドバイスすることができますか?No rule to make target dl_params.inc, needed by angfrc.o.
エラーメッセージが私に何を伝えているのかわかりません。貴重な時間をいただきありがとうございます。
ベストアンサー1
エラーメッセージは、Makefileがファイルを構築するための依存関係としてNo rule to make target dl_params.inc, needed by angfrc.o.
ファイルを指定していることを意味します。したがって、何らかの方法でそのファイルを検索または生成する必要があります。dl_params.inc
angfrc.o
dl_params.inc
文書を検索すると、ファイルにDL_POLYに必要なFORTRANパラメーターを含める必要があることがわかります。これユーザーマニュアルutility
セクション7.1.1は、そのようなパラメータファイル(デフォルトで呼び出される)を生成するために使用できるプログラムを含むサブフォルダがあることを説明します。ファイルの名前を変更してデフォルトのソースフォルダに配置します。PARSET
new_params.inc
new_params.inc
dl_params.inc
エラーが続く場合、Makefileは明らかにdl_params.inc
他の場所にファイルが必要なので、Makefileを注意深く見てください。