AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / unix / 问题 / 690795
Accepted
GGibson
GGibson
Asked: 2022-02-16 08:52:39 +0800 CST2022-02-16 08:52:39 +0800 CST 2022-02-16 08:52:39 +0800 CST

为什么某些 WSL2 安装允许 elf 可执行文件、win 可执行文件或两者兼有?

  • 772

我试图弄清楚发生了什么。我观察以下。

  • 在 Windows 10 上编译的 exe 二进制文件
  • 在 CentOS7 上编译的 elf 二进制文件musl
  • 用户 1 WSL2:(elf binary runs, exe binary runs更新)
  • 用户 2 WSL2:elf binary error, exe binary runs (surprised #1)
  • 用户 3 WSL2:elf binary runs, exe binary runs (surprised #2)

请注意,这些错误是来自操作系统的可执行格式错误,而不是程序崩溃。

在一台新机器上,我可以重新创建用户 1 体验,但我不知道为什么其他用户会有他们的体验。我通过屏幕共享验证了他们正在观察的内容。

编辑当我可以在下次会议期间了解有关用户的更多信息时,有关在 WSL 中运行不同类型的可执行文件的兼容性以及它如何随时间变化的信息可能会有所帮助。 https://stackoverflow.com/questions/38920710/how-can-i-run-a-windows-executable-from-wsl-ubuntu-bash

编辑我计划下次与用户会面时收集更多信息,例如:

  • 视窗版
  • WSL 版本
  • 终端外壳/如何调用终端
windows-subsystem-for-linux
  • 2 2 个回答
  • 221 Views

2 个回答

  • Voted
  1. NotTheDr01ds
    2022-02-17T13:19:06+08:002022-02-17T13:19:06+08:00

    不是一个完整的答案,但是当您收集更多信息时,我会回来。

    但就目前而言,您提到用户 #2 案例令人惊讶,其中 elf 和 Windows (PE) 二进制文件都运行。

    但这是 WSL 的“正常”情况。只要指定了全名(包括.exe扩展名),WSL 就允许执行 Windows 二进制文件。例如,notepad.exe在 WSL 中执行几乎总是使用开箱即用的默认值。

    它通过binfmt_misc在初始化期间向 Linux 注册 PE 格式来实现这一点。您可以通过cat /proc/sys/fs/binfmt_misc/WSLInterop. 有趣(对我来说,无论如何)TIL 旁注指出,指定 Windows 二进制文件的 4d5a 的魔术字节源于原始 DOS PE 格式,这些是十六进制 ASCII 字符“mz”,代表 Mark Zbikowsky,原始文件之一DOS建筑师。

    请注意,可以通过多种方式禁用此支持,因此如果用户无法运行 Windows 二进制文件,请检查上述结果cat /proc/sys/fs/binfmt_misc/WSLInterop。

    此外,正如您所提到的,请检查 WSL 版本以及有关可执行文件的更多信息。可执行文件是为 32 位还是 64 位架构编译的?如果我没记错的话,WSL1 只能运行 64 位二进制文​​件,但 WSL2 可以同时运行两者。

    • 2
  2. Best Answer
    GGibson
    2022-02-19T09:52:08+08:002022-02-19T09:52:08+08:00

    我一直无法再次与用户见面,但我相信我已经弄清楚发生了什么。

    1. WSL 支持 UPX 压缩二进制文件的历史参差不齐。我们的二进制文件一直是 UPX 压缩的,但 WSL 对此的支持随时间而变化。我现在禁用了 UPX 压缩,并且每个 linux 发行版(包括 WSL)的二进制运行都没有问题。

    2. 由于新的误报 Windows Defender 状态,Windows 现在会自动从用户计算机中删除我们的 exe。这导致用户 1 在实际程序不存在时报告“程序未正确运行并给出错误”,这是一个完全不同的错误。我已将特定于 Windows 的支持回滚到未触发此行为的早期版本,因此暂时无法以最佳方式解决此问题。

    • 1

相关问题

  • SSH linux子系统windows 10

  • Bash For循环不起作用

  • SSH进入同一网络上的两台不同机器[关闭]

  • 在 Bash 中绑定 ALT-F4 以退出的方法(Windows 上的 Ubuntu 上的 Bash)

  • 适用于 Linux 的 Windows 子系统上的 OpenZFS

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    模块 i915 可能缺少固件 /lib/firmware/i915/*

    • 3 个回答
  • Marko Smith

    无法获取 jessie backports 存储库

    • 4 个回答
  • Marko Smith

    如何将 GPG 私钥和公钥导出到文件

    • 4 个回答
  • Marko Smith

    我们如何运行存储在变量中的命令?

    • 5 个回答
  • Marko Smith

    如何配置 systemd-resolved 和 systemd-networkd 以使用本地 DNS 服务器来解析本地域和远程 DNS 服务器来解析远程域?

    • 3 个回答
  • Marko Smith

    dist-upgrade 后 Kali Linux 中的 apt-get update 错误 [重复]

    • 2 个回答
  • Marko Smith

    如何从 systemctl 服务日志中查看最新的 x 行

    • 5 个回答
  • Marko Smith

    Nano - 跳转到文件末尾

    • 8 个回答
  • Marko Smith

    grub 错误:你需要先加载内核

    • 4 个回答
  • Marko Smith

    如何下载软件包而不是使用 apt-get 命令安装它?

    • 7 个回答
  • Martin Hope
    user12345 无法获取 jessie backports 存储库 2019-03-27 04:39:28 +0800 CST
  • Martin Hope
    Carl 为什么大多数 systemd 示例都包含 WantedBy=multi-user.target? 2019-03-15 11:49:25 +0800 CST
  • Martin Hope
    rocky 如何将 GPG 私钥和公钥导出到文件 2018-11-16 05:36:15 +0800 CST
  • Martin Hope
    Evan Carroll systemctl 状态显示:“状态:降级” 2018-06-03 18:48:17 +0800 CST
  • Martin Hope
    Tim 我们如何运行存储在变量中的命令? 2018-05-21 04:46:29 +0800 CST
  • Martin Hope
    Ankur S 为什么 /dev/null 是一个文件?为什么它的功能不作为一个简单的程序来实现? 2018-04-17 07:28:04 +0800 CST
  • Martin Hope
    user3191334 如何从 systemctl 服务日志中查看最新的 x 行 2018-02-07 00:14:16 +0800 CST
  • Martin Hope
    Marko Pacak Nano - 跳转到文件末尾 2018-02-01 01:53:03 +0800 CST
  • Martin Hope
    Kidburla 为什么真假这么大? 2018-01-26 12:14:47 +0800 CST
  • Martin Hope
    Christos Baziotis 在一个巨大的(70GB)、一行、文本文件中替换字符串 2017-12-30 06:58:33 +0800 CST

热门标签

linux bash debian shell-script text-processing ubuntu centos shell awk ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve