最近因为项目原因,研究了一下WebAssembly。2015年上线与JS、HTML、CSS并称web界四语言,额,虽然已经上线快10年,但是研究的人好少,注定这个探索之路是崎岖的。(事实也是这样,已经耗进去快2周了,人都麻了-_-||)
本文依赖的环境是Ubuntu18.04,因项目需要将C/C++编写的项目打包成wasm,项目结构复杂,若使用emcc命令行方式会很麻烦,因此使用emcc+cmake组合。
开发环境
为啥要把开发环境放在第一位呢,这里面也是采了无数的坑。
开发工具 | 版本 |
---|---|
Ubuntu | 18.04 |
emscripten | 3.1.55 |
cmake | 3.28.3 |
安装Emscripten编辑器
参考文档如下:
Emscripten中文网
emscripten Download and install
- 下载源码
git clone https://github.com/juj/emsdk.git
- 进入emsdk目录,执行如下命令
# 在 Linux 或者 Mac macOS 上
./emsdk install --build=Release sdk-incoming-64bit binaryen-master-64bit
./emsdk activate --global --build=Release sdk-incoming-64bit binaryen-master-64bit
# 出错:如果在你的 macos/linux 上获得以下错误
Error: No tool or SDK found by name 'sdk-incoming-64bit'
# 请执行
./emsdk install latest
# 按照提示配置环境变量即可
./emsdk activate latest
- 配置环境变量
# on Linux or Mac macOS
source ./emsdk_env.sh
# on Windows
emsdk_env.bat
- 验证,输入命令行查看版本号
emcc -v
安装cmake环境
- 在官网下载源码
https://cmake.org/download/ cmake-3.28.3.tar.gz
- 创建目录后解压
tar -zxf cmake-3.28.3.tar.gz
- 配置cmake,打开源码目录
cd cmake-3.28.3
,然后执行./configure --prefix=/opt/cmake
报找不到OpenSSL,解决后继续执行该命令 - 编译,
make -j 8
- 安装,
sudo make install
- 配置环境变量,
export PATH="$PATH:/opt/cmake/bin"
- 重新初始化Bash,
source ~/.bashrc
- 查看最新cmake版本,
cmake --version
错误
Could NOT find OpenSSL
Could NOT find OpenSSL, try to set the path to OpenSSL root folder in the system variable OPENSSL_ROOT_DIR (missing: OPENSSL_CRYPTO_LIBRARY OPENSSL_INCLUDE_DIR)
解决方案:
sudo apt-get install openssl
sudo apt-get install libssl-dev
Ubuntu Cmake :Command not found解决方法
已经安装了,但是执行cmake命令还是会报错Command not found
,环境变量写入是一次性的,重启机器后失效,得重新配置一遍6-7步
- 配置环境变量,
export PATH="$PATH:/opt/cmake/bin"
- 重新初始化Bash,
source ~/.bashrc
- 查看最新cmake版本,
cmake --version