
構築しようとしています。モーセしかし、実行すると、make
次の結果が表示されます。
minakshi@minakshi-Vostro-3500:~/Desktop/working-dir/moses/scripts$ make release
# Compile the parts
make all
make[1]: Entering directory `/home/minakshi/Desktop/working-dir/moses/scripts'
# Building memscore may fail e.g. if boost is not available.
# We ignore this because traditional scoring will still work and memscore isn't used by default.
cd training/memscore ; \
./configure && make \
|| ( echo "WARNING: Building memscore failed."; \
echo 'training/memscore/memscore' >> ../../release-exclude )
checking for a BSD-compatible install... /usr/bin/install -c
checking whether build environment is sane... yes
checking for gawk... no
checking for mawk... mawk
checking whether make sets $(MAKE)... yes
checking for g++... g++
checking whether the C++ compiler works... yes
checking for C++ compiler default output file name... a.out
checking for suffix of executables...
checking whether we are cross compiling... no
checking for suffix of object files... o
checking whether we are using the GNU C++ compiler... yes
checking whether g++ accepts -g... yes
checking for style of include used by make... GNU
checking dependency style of g++... gcc3
checking for gcc... gcc
checking whether we are using the GNU C compiler... yes
checking whether gcc accepts -g... yes
checking for gcc option to accept ISO C89... none needed
checking dependency style of gcc... gcc3
checking for boostlib >= 1.31.0... yes
checking for cos in -lm... yes
checking for gzopen in -lz... yes
checking for cblas_dgemm in -lgslcblas... no
checking for gsl_blas_dgemm in -lgsl... no
checking how to run the C++ preprocessor... g++ -E
checking for grep that handles long lines and -e... /bin/grep
checking for egrep... /bin/grep -E
checking for ANSI C header files... yes
checking for sys/types.h... yes
checking for sys/stat.h... yes
checking for stdlib.h... yes
checking for string.h... yes
checking for memory.h... yes
checking for strings.h... yes
checking for inttypes.h... yes
checking for stdint.h... yes
checking for unistd.h... yes
checking n_gram.h usability... no
checking n_gram.h presence... no
checking for n_gram.h... no
checking for size_t... yes
checking for ptrdiff_t... yes
configure: creating ./config.status
config.status: creating Makefile
config.status: creating config.h
config.status: config.h is unchanged
config.status: executing depfiles commands
make[2]: Entering directory `/home/minakshi/Desktop/working-dir/moses/scripts/training/memscore'
make all-am
make[3]: Entering directory `/home/minakshi/Desktop/working-dir/moses/scripts/training/memscore'
make[3]: Leaving directory `/home/minakshi/Desktop/working-dir/moses/scripts/training/memscore'
make[2]: Leaving directory `/home/minakshi/Desktop/working-dir/moses/scripts/training/memscore'
touch release-exclude # No files excluded by default
pwd=`pwd`; \
for subdir in cmert-0.5 phrase-extract symal mbr lexical-reordering; do \
make -C training/$subdir || exit 1; \
echo "### Compiler $subdir"; \
cd $pwd; \
done
make[2]: Entering directory `/home/minakshi/Desktop/working-dir/moses/scripts/training/cmert-0.5'
make[2]: Nothing to be done for `all'.
make[2]: Leaving directory `/home/minakshi/Desktop/working-dir/moses/scripts/training/cmert-0.5'
### Compiler cmert-0.5
make[2]: Entering directory `/home/minakshi/Desktop/working-dir/moses/scripts/training/phrase-extract'
make[2]: Nothing to be done for `all'.
make[2]: Leaving directory `/home/minakshi/Desktop/working-dir/moses/scripts/training/phrase-extract'
### Compiler phrase-extract
make[2]: Entering directory `/home/minakshi/Desktop/working-dir/moses/scripts/training/symal'
make[2]: Nothing to be done for `all'.
make[2]: Leaving directory `/home/minakshi/Desktop/working-dir/moses/scripts/training/symal'
### Compiler symal
make[2]: Entering directory `/home/minakshi/Desktop/working-dir/moses/scripts/training/mbr'
make[2]: Nothing to be done for `all'.
make[2]: Leaving directory `/home/minakshi/Desktop/working-dir/moses/scripts/training/mbr'
### Compiler mbr
make[2]: Entering directory `/home/minakshi/Desktop/working-dir/moses/scripts/training/lexical-reordering'
make[2]: Nothing to be done for `all'.
make[2]: Leaving directory `/home/minakshi/Desktop/working-dir/moses/scripts/training/lexical-reordering'
### Compiler lexical-reordering
## All files that need compilation were compiled
make[1]: Leaving directory `/home/minakshi/Desktop/working-dir/moses/scripts'
/bin/sh: ./check-dependencies.pl: Permission denied
make: *** [release] Error 126
minakshi@minakshi-Vostro-3500:~/Desktop/working-dir/moses/scripts$ make release
# Compile the parts
make all
make[1]: Entering directory `/home/minakshi/Desktop/working-dir/moses/scripts'
# Building memscore may fail e.g. if boost is not available.
# We ignore this because traditional scoring will still work and memscore isn't used by default.
cd training/memscore ; \
./configure && make \
|| ( echo "WARNING: Building memscore failed."; \
echo 'training/memscore/memscore' >> ../../release-exclude )
checking for a BSD-compatible install... /usr/bin/install -c
checking whether build environment is sane... yes
checking for gawk... no
checking for mawk... mawk
checking whether make sets $(MAKE)... yes
checking for g++... g++
checking whether the C++ compiler works... yes
checking for C++ compiler default output file name... a.out
checking for suffix of executables...
checking whether we are cross compiling... no
checking for suffix of object files... o
checking whether we are using the GNU C++ compiler... yes
checking whether g++ accepts -g... yes
checking for style of include used by make... GNU
checking dependency style of g++... gcc3
checking for gcc... gcc
checking whether we are using the GNU C compiler... yes
checking whether gcc accepts -g... yes
checking for gcc option to accept ISO C89... none needed
checking dependency style of gcc... gcc3
checking for boostlib >= 1.31.0... yes
checking for cos in -lm... yes
checking for gzopen in -lz... yes
checking for cblas_dgemm in -lgslcblas... no
checking for gsl_blas_dgemm in -lgsl... no
checking how to run the C++ preprocessor... g++ -E
checking for grep that handles long lines and -e... /bin/grep
checking for egrep... /bin/grep -E
checking for ANSI C header files... yes
checking for sys/types.h... yes
checking for sys/stat.h... yes
checking for stdlib.h... yes
checking for string.h... yes
checking for memory.h... yes
checking for strings.h... yes
checking for inttypes.h... yes
checking for stdint.h... yes
checking for unistd.h... yes
checking n_gram.h usability... no
checking n_gram.h presence... no
checking for n_gram.h... no
checking for size_t... yes
checking for ptrdiff_t... yes
configure: creating ./config.status
config.status: creating Makefile
config.status: creating config.h
config.status: config.h is unchanged
config.status: executing depfiles commands
make[2]: Entering directory `/home/minakshi/Desktop/working-dir/moses/scripts/training/memscore'
make all-am
make[3]: Entering directory `/home/minakshi/Desktop/working-dir/moses/scripts/training/memscore'
make[3]: Leaving directory `/home/minakshi/Desktop/working-dir/moses/scripts/training/memscore'
make[2]: Leaving directory `/home/minakshi/Desktop/working-dir/moses/scripts/training/memscore'
touch release-exclude # No files excluded by default
pwd=`pwd`; \
for subdir in cmert-0.5 phrase-extract symal mbr lexical-reordering; do \
make -C training/$subdir || exit 1; \
echo "### Compiler $subdir"; \
cd $pwd; \
done
make[2]: Entering directory `/home/minakshi/Desktop/working-dir/moses/scripts/training/cmert-0.5'
make[2]: Nothing to be done for `all'.
make[2]: Leaving directory `/home/minakshi/Desktop/working-dir/moses/scripts/training/cmert-0.5'
### Compiler cmert-0.5
make[2]: Entering directory `/home/minakshi/Desktop/working-dir/moses/scripts/training/phrase-extract'
make[2]: Nothing to be done for `all'.
make[2]: Leaving directory `/home/minakshi/Desktop/working-dir/moses/scripts/training/phrase-extract'
### Compiler phrase-extract
make[2]: Entering directory `/home/minakshi/Desktop/working-dir/moses/scripts/training/symal'
make[2]: Nothing to be done for `all'.
make[2]: Leaving directory `/home/minakshi/Desktop/working-dir/moses/scripts/training/symal'
### Compiler symal
make[2]: Entering directory `/home/minakshi/Desktop/working-dir/moses/scripts/training/mbr'
make[2]: Nothing to be done for `all'.
make[2]: Leaving directory `/home/minakshi/Desktop/working-dir/moses/scripts/training/mbr'
### Compiler mbr
make[2]: Entering directory `/home/minakshi/Desktop/working-dir/moses/scripts/training/lexical-reordering'
make[2]: Nothing to be done for `all'.
make[2]: Leaving directory `/home/minakshi/Desktop/working-dir/moses/scripts/training/lexical-reordering'
### Compiler lexical-reordering
## All files that need compilation were compiled
make[1]: Leaving directory `/home/minakshi/Desktop/working-dir/moses/scripts'
/bin/sh: ./check-dependencies.pl: not found
make: *** [release] Error 127
エラーメッセージには「見つかりません」と表示されますが、フォルダにファイルが存在しているようです./check-dependencies.pl
。scripts
それでは、なぜこのようなエラーが発生するのでしょうか?
答え1
このエラーの最も可能性の高い原因は、ファイルがcheck-dependencies.pl
makefile が検索するディレクトリにないためです。ただし、ファイルがcheck-dependencies.pl
に存在する場合は/home/minakshi/Desktop/working-dir/moses/scripts
別の可能性があります。おそらく、対応するローダーが存在しない可能性があります。
- スクリプトの場合、ローダーは前述のインタープリターです。シェルボーン行、つまり最初の行は次から始める必要があり、
#!
その後にインタプリタへのパスが続く必要があります。 - バイナリファイルの場合、ローダは次のようになります。動的リンカー(静的にリンクされた実行可能ファイルにローダはありません) - 参照64ビットシステムで32ビットバイナリを実行すると「見つかりません」メッセージを受信する。
カーネルがプログラムを実行するように指示されたら、ローダーを実行してロードする実行可能ファイルを渡します。ローダーが見つからない場合、カーネルは「見つからない」だけを報告でき、「直接要求されたファイルが見つかりません」と「ローダーが見つかりません」を区別する方法はありません。時々、実行シェルはより明確なエラーメッセージを表示するために2回目のチェックを実行しますが、時には実際にはスクリプトや動的にリンクされた実行可能ファイルが見つからないか実行できないという奇妙なメッセージが表示されることがあります。ファイルが存在し実行可能ですが、そのローダーにエラーが適用されます。
.pl
拡張機能はcheck-dependencies.pl
おそらくPerlスクリプトです。これは#!/usr/local/bin/perl
、システムのPerlインタプリタへのパスを提供しない次の行から始めることができます。スクリプトを編集して最初の行を変更する必要があるかもしれませんが、その逆も同様です#!/usr/local/bin/perl
。#!/usr/bin/perl
Perlは通常Linuxで見つかりますが、他の多くのUnix/usr/bin
でも見つかります。/usr/local/bin
通訳者のパスを事前に知らずにshebang行を作成する方法があります#!/usr/bin/env perl
。 shebangラインには絶対パスが必要です。env
ここでは、インタプリタは引数が渡されていない場合にのみ機能します。 Linuxを含む多くのシステムは、コマンドラインで単一の引数を受け入れます。というプログラムを実行しようとすると失敗します。perl
$PATH
#!/usr/bin/perl -T
#!/usr/bin/env perl
#!/usr/bin/env perl -T
perl -T