前言:
最近接了一个项目,甲方要求集成office,笔者查阅了相关资料jf ,发现libreOffice有wasm分支,就尝试编译了一下
笔者尝试在win10系统下编译,但没成功,本笔记是在ubuntu20.04下完成的,请读者自己准备相关的环境,并分配足够的资源
一、基本想法
将office程序直接运行在web浏览器中,而无需安装office;同时也无需专门的office online服务器
二、源码准备
1.下载libreoffice源码,找个目录,使用git直接拉下来
git clone https://git.libreofficechina.org/core
切换到feature/wasm分支
注:笔者是这样做的,但好像不是一个明智之举,下载了1.6G,建议只拉取一个分支的就好了
2.下载并安装Qt5.15.2及源码
具体可以参考之前的文章,笔者不再重复
三、依赖准备
直接使用在线源安装
sudo apt-get install autoconf aclocal libfontconfig-dev gperf libxslt1-dev xsltproc libxml2-utils bison flex buill-essential
注:笔者安装的是ubuntu20.04,没有安装任何软件
四、编译环境搭建
1.安装emsdk 2.0.23
下载地址:https://github.com/emscripten-core/emsdk/releases
解压到一目录中,笔者放在~/Documents/emsdk中,执行如下命令安装
~/Documents/emsdk/emsdk-2.0.23/emsdk install 2.0.23
注:可能会失败,可以执行多次
安装完成后,执行如下命令,配置环境
~/Documents/emsdk/emsdk-2.0.23/emsdk activate --embedded 2.0.23
source ~/Documents/emsdk/emsdk-2.0.23/emsdk_env.sh
配置完成后,一定要执行如下命令,看是否配置正确
em++ --version
五、编译过程
1.编译Qt5.15.2源码
切换到Qt源码目录,执行如下命令,具体不再展开,请读者参考上篇文档
./configure -xplatform wasm-emscripten -nomake examples -feature-thread -prefix ~/Qt/5.15.2/wasm
make -j4
make install
2.编译libreoffice
切换到libreoffice源码目录
注:请确保是在feature/wasm分支上
执行如下代码
#配置Qt目录,请修改成刚刚的编译的输出目录
export QT5DIR=~/Qt/5.15.2/wasm
#配置工程
sh ./autogen.sh --with-distro=LibreOfficeWASM32
#编译工程
make
配置过程会下载一些库,整个过程时间比较长,请耐心等待
六、运行测试
按README.wasm文件描述,执行如下命令可以查看示例
emrun --serve_after_close workdir/LinkTarget/Executable/qt_wasm-qt5-mandelbrot.html
笔者分别执行了如下命令
emrun --serve_after_close --no_browser --port 8080 workdir/LinkTarget/Executable/
emrun --serve_after_close --no_browser --port 8080 instdir/program/
然后打开谷歌浏览器运行目录下的html文件,让笔者疑惑的是,要么运行出错,要么不知道加载了什么东西。当前笔者并未阅读对应的源码,可能是还没完善吧,先等待官方放出正式版
可能会遇到的问题
1.编译时,提示找不到Qt相关的库
解决方法:检查下环境变量中,QT5DIR正确,笔者的是~/Qt/5.15.2/wasm
2.配置工程时提示缺少autoconf
解决方法:执行如下命令安装
sudo apt-get install autoconf
3.配置工程时提示缺少aclocal
解决方法:执行如下命令安装
sudo apt-get install aclocal
4.配置工程时提示checking for fontconfig... no
解决方法:执行如下命令安装
sudo apt-get install libfontconfig-dev
5.配置工程时提示checking for gperf... no
解决方法:执行如下命令安装
sudo apt-get install gperf
6.配置工程时提示checking for libxslt... no
解决方法:执行如下命令安装
sudo apt-get install libxslt1-dev
7.配置工程时提示checking for xsltproc... no
解决方法:执行如下命令安装
sudo apt-get install xsltproc
8.配置工程时提示checking for xmllint... no
解决方法:执行如下命令安装
sudo apt-get install libxml2-utils
9.配置工程时提示checking for bison... no
解决方法:执行如下命令安装
sudo apt-get install bison
10.配置工程时提示checking the bison version... checking for flex... no
解决方法:执行如下命令安装
sudo apt-get install flex
11.配置完成时提示WARNING : no suitable nasm (Netwide Assembler) found for internal libjpeg-turbo
解决方法:执行如下命令安装
sudo apt-get install nasm
后记:
虽然运行失败了,但作为一个解决思路,我们值得借鉴,期待下一版的更新