不熟悉计算机世界的道歉!我正在尝试运行一些分子动态模拟,在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,所以我不了解代码的大部分内容,尽管我用谷歌搜索。非常感谢帮助!
答案 0 :(得分:1)
除非所有这四件事都成立,否则此行将退出您的程序。
$exec
中的文件名包含文字文本"ibrun"
$exec
中的文件名包含文字文本"mpi"
$exec
中的文件名文件。$exec
中的文件名文件具有可执行权限位。您可以将其分解为三个语句,以查看哪些条件未得到满足:
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所以只是将它声明为环境变量。再次感谢!