使用 Emscripten 进行 gRPC Web 编译

问题描述 投票:0回答:1

我可以使用 Emscripten 将 gRPC 编译到 Web 吗?

注意:我正在尝试编译它,但它不断出现错误,请帮忙,

注意:没有 gRPC-Web。

谢谢。

我正在编译gRPC跨平台,除了Web端之外,我能够在任何地方编译它。 我遇到了一些常见错误,我正在通过研究解决它们,但正在添加新错误:

  • clang++:错误:选项“-Wa”不支持参数“-g”
  • 错误:“无法自动检测平台”
  • grpc 错误:未知类型名称“gpr_atm”
  • emcc:错误:libz.a:没有这样的文件或目录(根据提供的命令行参数,“libz.a”应该是输入文件)
  • wasm-ld:错误:ex_data.c.o 不允许使用 --shared-memory,因为它没有使用“原子”或“大容量内存”功能进行编译。
  • 致命错误:找不到“sys/eventfd.h”文件致命错误:找不到“sys/epoll.h”文件
grpc cross-platform webassembly emscripten
1个回答
0
投票

我认为您没有意识到将其移植到 WASM 所需的工作量。毕竟它是一个平台。它相当于 Windows 或 macOS 的移植。

您需要理解并修改 makefile 以修复编译器选项。

但这只是开始。

libz
例如已被移植 - 您必须获取它,编译它并将其包含在您的项目中。

但是当谈到

epoll
eventfd
时 - 嗯,这些在网络世界中根本没有直接的等价物。您将必须重新实现部分代码。

共享内存要求您使用

-pthread
进行编译,并且您的网络服务器启用了 COOP/COEP - 谷歌搜索以获取更多信息 - 您将需要
SharedArrayBuffer

这绝对是一项艰巨的任务,您必须学习很多关于

gRPC
内部结构和 WASM 世界的知识。

© www.soinside.com 2019 - 2024. All rights reserved.