0

我有一个名为“speed.c”的文件,我希望将其用于网络程序

这有效:

 gcc speed.c -lcrypto -lssl

但这不会:

emcc speed.c -v -lcrypto -lssl -s EXPORTED_FUNCTIONS=_speed,_main -o speed.wasm

speed.c 中的函数称为“速度”。在 Emscripten 的网站上,它说编译器和其他编译器一样,所以这个让我很困惑。有什么帮助吗?谢谢!

4

1 回答 1

0

Emscripten 不能使用你系统的库。这是因为它们是为您自己的机器(可能是 64 位 linux)编译的二进制文件,同时emcc编译为 WebAssembly/JavaScript。您通常可以看到二进制文件所针对的架构file

$ file `realpath /usr/lib/libssl.so`

因此,您需要首先使用emcc. 我自己没有这样做,但我相信这是可能的。你可以查看这个 github 问题。完成后,您应该有两个文件名libssl.alibcrypto.a. 然后你可以像这样编译你自己的项目:

$ SSL=/path/to/openssl
$ emcc speed.c $SSL/libssl.a $SSL/libcrypto.a -I $SSL/include/  # etc.

如果您还没有,请查看项目构建页面。

于 2021-05-28T16:39:58.960 回答