目录
- 前言
- 1、下载cef
- 2、编译libcef_dll
- 2.1 问题一 cmake版本太低
- 2.2 问题二 无法识别的编译选项 -m64
- 3、总结
前言
本篇主要记录了在飞腾PC麒麟V10系统下编译libcef_dll时遇到的问题及解决方法。在Qt应用程序中使用QWebEngine加载HTML网页算是常规操作,但是涉及到3d模型的加载及显示,QWebEngine的表现就差得多了。为了解决网页加载3d模型卡顿的问题,我们考虑使用cef代替QWebEngine。
1、下载cef
这里是CEF的官网,如下图所示,打开网页后向下滑动到Quick Links 部分,这部分给出了CEF的一些参考资料网址,红色框部分是下载链接,点击这个链接打开下载页面。
CEF下载页面如下图所示,这里不是下载CEF源码而是直接下载编译好的CEF二进制文件,从图中可以看到,几乎支持了所有主流平台。飞腾麒麟V10系统选择下载Linux ARM64版本,这里下载了图中红框标注的两个压缩包。
cef_binary_118.6.9+g7e73645+chromium-118.0.5993.119_linuxarm64 为标准发布版,解压后的目录如下图所示,其中包括了Release和Debug版的动态库及其依赖。README.txt文档对目录中的各个文件作了介绍。
下图是README.txt文档的部分内容,libcef_dll目录中是libcef_dll_wrapper 静态库的源码,所有使用CEF的C++应用程序必须链接这个库。
2、编译libcef_dll
根据README文档中的介绍,可以使用cmake来编译libcef_dll_wrapper库。在cef目录下打开终端,新建build目录,然后执行cmake命令:
mkdir build
cd build
cmake ../
2.1 问题一 cmake版本太低
在此遇到了本文需要解决的第一个问题,见下图所示:
该错误是说cmake的最低版本得是3.21以上,而麒麟V10系统中的cmake版本是3.16.3,版本太低了。这时使用’sudo apt upgrade cmake ‘尝试升级cmake,却提示已经是最新版本了。没办法只能考虑修改版本号了,于是打开根目录下的CMakeLists.txt文档修改cmake的版本号为3.16,如下图所示,可以看到这里将版本号设置为3.21是为了支持VS2022和Xcode12+。
保存文档后,继续执行 cmake ../
命令,这次顺利生成了makefile文件。
2.2 问题二 无法识别的编译选项 -m64
接着执行make -j4
命令来编译静态库,在这里遇到了第二个问题,如下图所示:
系统中的编译器不支持-m64编译选项,没办法只能将其删除,根据错误提示,在build/libcef_dll_wrapper/CMakeFiles/libcef_dll_wrapper.dir/flags.make 文件中找到了报错的 -m64选项,如下图所示,将下图红框中的两个编译选项都删除后,再次执行 make -j4
命令可成功编译生成libcef_dll_wrapper.a。由于执行make命令的时候,不只编译libcef_dll_wrapper库,同时也会编译test目录中的几个程序,所以也会遇到类似的 -m64 编译选项无法识别的问题,用上面的思路找到对应的flags.make 文件,将其中的 -m64 -march=x86-64 删除即可。
下图中的libcef_dll_wrapper.a就是最终需要的静态库文件。
3、总结
本文记录了麒麟V10系统下从下载CEF开始到成功编译出libcef_dll_wrapper 所踩的坑,经过本次折腾,以后再遇到类似的问题就能快速解决了。希望读了本文能对你解决实际问题有帮助,以上就是本文的所有内容了,欢迎留言讨论!!