【问题标题】:Linux executable on cygwin terminal [duplicate]cygwin终端上的Linux可执行文件[重复]
【发布时间】:2015-12-22 15:46:55
【问题描述】:

让我告诉你我的问题。我有一个执行 Linux 可执行文件的 shell 脚本。我无权访问此 exe 的源代码。

当我在 Linux 机器上运行脚本时,没有问题。 但是,如果我尝试在我的 Windows 笔记本电脑上使用 cygwin 运行脚本,则会出现错误“无法执行二进制文件”。

有什么解决办法吗?

谢谢!

【问题讨论】:

  • 你需要告诉我们可执行文件是什么。
  • 从命令“文件”中提取的信息:用于 GNU/Linux 2.6.9 的 ELF 32 位 LSB 可执行文件

标签: linux windows unix cygwin


【解决方案1】:

来自https://stackoverflow.com/a/4144536/5704102

"... Cygwin 是一个兼容层,旨在在 Windows 中实现尽可能多的 POSIX 和 Linux API。这意味着必须专门为 Cygwin 编译程序..."

【讨论】:

    【解决方案2】:

    这个脚本是什么样子的?它是一个bash脚本吗?如果是这样,您可能想在 Cygwin 中尝试 sh <scriptfile>。如果这不起作用,并且它是一个 bash 脚本,请确保您有 sh.exe。输入sh 并按两次tab 进行检查。

    如果是 bash 脚本,另一个潜在问题是您没有安装 Cygwin 运行脚本所需的东西。确保脚本尝试运行的所有命令都能正常工作。如果没有,您可能必须运行 Cygwin 安装程序并安装运行脚本所需的任何内容。

    另外,您可能需要检查权限。

    如果文件具有exe 扩展名,它应该可以在 Windows 上运行,除非它是为 64 位架构编译的并且您运行的是 32 位操作系统。否则,您可能会丢失一些可执行文件所依赖的.dll 文件。

    编辑:

    如果这是您脚本的内容:

    echo START
    /oper/file.exe
    

    那么很可能您的路径不正确。在 Windows 中,Cygwin 路径通常以 /cygdrive/c/ 开头。转到文件所在的位置并键入pwd 以获取正确的路径,然后相应地修改您的脚本。

    【讨论】:

    • 是的,它是一个 bash 脚本。所以我用 sh 命令调用脚本,我试过用 sh executable.exe 来运行它,但是有同样的问题
    • 文件的扩展名为exe?如果是这样,那么它可能不是 bash 脚本。如果您在文本编辑器中打开文件,它会是什么样子?
    • 我的脚本是一个 bash 脚本。但是这个脚本尝试运行带有 exe 扩展名的可执行文件。
    • 什么可执行文件? sh.exe?您能否编辑您的问题以准确显示您要运行的命令是什么以及您要运行的文件的名称是什么?此外,发布您尝试运行的文件的内容可能会有所帮助。
    • 转到该文件所在的位置,输入pwd,然后编辑脚本以指向正确的路径。
    【解决方案3】:

    oper 文件夹中 Script.sh 的内容:

    echo START
    /cygdrive/c/Users/jo/oper/file.exe
    

    在 Cygwin 终端中(在右侧文件夹中):

    sh Script.sh
    

    (路径已更新)

    【讨论】:

      猜你喜欢
      • 2014-02-09
      • 1970-01-01
      • 2011-08-06
      • 2018-09-11
      • 1970-01-01
      • 2016-03-15
      • 2015-08-26
      • 1970-01-01
      • 2018-06-12
      相关资源
      最近更新 更多