---
title: Ubuntu 16.04 运行微信开发者工具编译出错的解决办法
date: 2018-04-19T18:21:00+08:00
tags:
  - 技术

---

最近有折腾小程序的意向，但微信的开发者工具只提供了 Windows 和 Mac 两个版本，对于我这样的 Linux 用户来说不是那么地友好。

经过观察发现，那个开发者工具实际上是基于`nw.js`开发的，天然地具有跨平台的属性，搜索Github的时候刚好发现这个项目：[cytle/wechat_web_devtools: 微信开发者工具(微信小程序)linux完美支持](https://github.com/cytle/wechat_web_devtools)

于是我按照README的教程装好 Wine，运行脚本配置安装。装好后发现功能基本正常，唯独不能正常编译小程序代码，提示

```
run-detectors: unable to find an interpreter xxxxxxx
```

文档给出的解决办法是，安装一个 wine-binfmt 包，当我敲下 `sudo apt install` 之后尴尬的发现， Ubuntu 16.04 LTS 缺失了这个包，想到配置各种下载源，也是挺让人绝望的。

不过呢，天无绝人之路。几经周折，刚好看到了 [Adding binfmt configuration to official Wine packages](https://www.winehq.org/pipermail/wine-devel/2016-August/114478.html)，整理了一个相关的解决方案，只需要手动添加一个解析 Windows 的 exe 的 binfmt 配置就可以了，大概那个 deb 包更改的内容也是这些吧。

具体的操作如下：

```bash
vim /usr/share/binfmts/wine
```

内容填入

```bash
package wine
interpreter /usr/bin/wine
magic MZ
```

保存退出，更新一下配置就好了

```bash
sudo update-binfmts --import wine
```

寻找解决方案的过程中，看到 Java, Python 也有东西放在了 binfmt 目录里面，内容也是类似的。

![3201756398.png](https://cdn.zgq.me/assets/posts/2018/ubuntu-wechat-devtools-error/3201756398.png)

或许这和那些脚本文件的第一行的 `#!/bin/sh`, `#!/usr/bin/env node` 之类的注释冥冥之中有什么关联？

大概这些东西和Linux内核有点关系，有时间的话得研究研究，说不定又打开了一个新世界呢;D
