请教一下有没有什么方式可以实现在 Windows 上完成编译只有在类 Unix 上配置环境的项目

2021-04-09 19:21:23 +08:00
 crayygy

完整的背景是这样的: 一个 Android 项目,非常大,底层全是 C++,由于用到了一些比较特殊的编译选项,目前测试下来只有 Linux/Mac 上面配置起来比较省心,尝试过 MinGW 以及 Cygwin,都遇到了不太好解决的问题,因此之前的解决方案一直是在 Linux 上面去编译。 最近因为新采购了一台 Windows 机器 (i9 + 32G + 1T SSD),而公司 VPN 又只有 Windows/Mac 上面可以用,因此又动了点心思想看看能不能实现想要的效果。

目前想到的解决方案:

  1. 使用 WSL2 + Ubuntu 20.04 ,不知道是否能达到使用 Windows 上的 Android Studio,但是编译时使用 WSL 内部的环境?(正在尝试,但感觉有点困难,VSCode 看了下可以实现,但是配置 Android 开发环境还是有点麻烦的)

  2. 使用 WSL2 + Ubuntu 20.04 ,在 WSL 内安装完整的 GNOME 环境,使用 WSL Ubuntu 内的 Android Studio 进行编码。(网络环境简单,但 WSL2 加上 GNOME,稳定性确实有些让人担忧)

  3. 使用 Windows + VirtualBox(Ubuntu 20.04) 来实现网络从 Windows 实体机上走,写代码时使用 VirtualBox 内部的 Ubuntu 来编译。(肯定可行,但担心虚拟机的 CPU 以及 IO 会不会造成较大的性能损失)

  4. 使用 Ubuntu + VirtualBox(Windows) 来实现网络从 Windows 虚拟机走,写代码使用 Ubuntu 。(没有性能损失,也没什么折腾的,但是可能存在 Policy 问题,因为网络走虚拟机的话,外部的使用公司无法监控)

不知道大家有什么想法或建议,还请不吝赐教,提前感谢!

913 次点击
所在节点    程序员
6 条回复
Jirajine
2021-04-09 19:24:11 +08:00
编译时没必要用 as,在 wsl 里装好 sdk/ndk 直接用就行。
crayygy
2021-04-09 19:27:06 +08:00
@Jirajine #1 这也是一种方案,但是这样会失去在 UI 上直接断点的能力,用 gdb 有点蛋疼...
Jirajine
2021-04-09 19:30:09 +08:00
@crayygy 为什么会?编译和运行是完全无关的过程,你之前怎么调试的还是怎么调试。
crayygy
2021-04-09 19:39:07 +08:00
@Jirajine 谢谢提醒,我先尝试一下。
我理解在 AS 中要实现跳转等等功能是需要先编译出一些 symbol 才可以的,不确定是否在 WSL 中编译产出的 symbol 也可以被 Windows 上的 AS 正确 load ?
Jirajine
2021-04-09 19:48:01 +08:00
@crayygy 你指的是调试符号么?这个格式都是通用的啊,只要编译的时候生成,运行时被调试器加载就可以了。不过你可能需要设置使用 relative path,因为调试器需要从里面读出哪一步对应到源码的哪一行,如果读出来的源码路径 IDE 找不到自然就没法下断点。
crayygy
2021-04-09 19:55:44 +08:00
@Jirajine 明白了,非常感谢!

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/769561

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX