Linux模拟器中的“无法执行二进制”错误

时间:2016-06-23 16:33:24

标签: linux perl cygwin

不熟悉计算机世界的道歉!我正在尝试运行一些分子动态模拟,在Windows机器上使用Cygwin Linux模拟器(64位)。但是我一直收到错误“无法执行二进制文件......”我已经尝试过“dos2unix”来查看它是否是语言错误。谷歌说它可能是64/32位不匹配,但我认为在64位上运行32位是好的吗?它无法执行二进制文件的代码如下:

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,所以我不了解代码的大部分内容,尽管我用谷歌搜索。非常感谢帮助!

2 个答案:

答案 0 :(得分:1)

除非所有这四件事都成立,否则此行将退出您的程序。

  1. 存储在变量$exec中的文件名包含文字文本"ibrun"
  2. 存储在变量$exec中的文件名包含文字文本"mpi"
  3. 可以访问存储在变量$exec中的文件名文件。
  4. 存储在变量$exec中的文件名文件具有可执行权限位。
  5. 您可以将其分解为三个语句,以查看哪些条件未得到满足:

    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 _;
    

答案 1 :(得分:0)

非常感谢大家!看起来问题是没有定义CHARMMEXEC所以只是将它声明为环境变量。再次感谢!