2016-06-23 6 views
0

コンピュータの世界に精通していないことに対する謝罪!私は、Windowsマシン上でCygwin Linuxエミュレータ(64ビット)を使用して分子動力学シミュレーションを実行しようとしています。しかし、私はエラーが "バイナリを実行することはできません...."を取得し続けている私は "dos2unix"は言語エラーかどうかを確認しようとしました。グーグルでは64/32ビットの不一致があると言われていますが、64ビットで32ビットを実行するのは問題ないと思いましたか?それはバイナリを実行できないコードは以下の通りです:Linuxエミュレータで「バイナリを実行できません」エラー

BEGIN { 
if ($ENV{'CHARMMEXEC'} ne "") { 
    $exec=$ENV{'CHARMMEXEC'}; 
} else { 
    $exec=&GenUtil::findExecutable("charmm"); 
} 

...

my $charmmexec=shift; 

if (defined $charmmexec) { 
    $exec=$charmmexec; 
} 

die "cannot execute binary" if ((!-x $exec) && ($exec !~ "mpi") && ($exec !~ "ibrun")); 

私はので、私はコードが何を意味するのかをほとんど理解していないperlで精通していないよ、にも関わらず、私のグーグルグーグル。ヘルプは非常に高く評価されるだろう!

+0

ようこそスタックオーバーフロー。あなたの質問を編集して、さらにコードを追加してください。変数$ execに何が含まれているかを知る必要があります。そのコード行は、 '$ exec'の値が実行可能ファイルではなく、その中に_mpi_という文字列が含まれておらず、その値に_ibrun_という文字列が含まれていない場合、エラー_ 'my $ exec = ...'や '$ exec = ...'のようなコードを見つけてそれを質問に追加する必要があります。 – simbabque

答えて

1

これらの4つの条件がすべて満たされない限り、この行はプログラムを終了します。

  1. 変数$execに格納されたファイル名がリテラルテキストを"ibrun"
  2. を含む変数$execに格納されたファイル名がリテラルテキスト"mpi"
  3. が可変$execに格納されたファイル名のファイルにアクセスすることができる含んでいます。
  4. 変数$execに格納されているファイル名のファイルに、実行可能なパーミッションビットが設定されています。

あなたは満たされていないこれらの条件のかを確認するために3つの文にこれを破ることができます:

die "Expected $exec to contain 'ibrun'"    if $exec !~ "ibrun"; 
die "Expected $exec to contain 'mpi'"    if $exec !~ "mpi"; 
die "Can't stat $exec: $!"       if !stat($exec); 
die "$exec is not executable. Run 'chmod +x $exec'" if !-x _; 
+0

偉大な、それはより意味をなさない、ありがとう!上記のユーザーのコードをもう少し詳しく説明します。** if(defined $ charmmexec){ $ exec = $ charmmexec; } **と** my $ charmmexec = shift **(私はこれが何を意味するのかわかりません?シフトの配列を扱う以外には何も見つかりません) – Monica

+0

これは許可エラーでも、ファイルが欠落している可能性があります。 – ikegami

+0

これは** ** shift **のように見えるので、変数をデフォルト値に設定します - そうですか? – Monica

0

グレートありがとうみんな! CHARMMEXECが定義されていないので、環境変数として宣言するだけの問題だったようです。再度、感謝します!

+0

根本的な原因を発見するのに役立ちましたので、問題の正確な根を指定しているので、この回答を受け入れてください。 – oldtechaa

関連する問題