麒麟V10系统下编译libcef_dll

目录

      • 前言
      • 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 所踩的坑,经过本次折腾,以后再遇到类似的问题就能快速解决了。希望读了本文能对你解决实际问题有帮助,以上就是本文的所有内容了,欢迎留言讨论!!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/130776.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Clickhouse SQL

insert insert操作和mysql一致 标准语法:insert into [table_name] values(…),(….)从表到表的插入:insert into [table_name] select a,b,c from [table_name_2] update 和 delete ClickHouse 提供了 Delete 和 Update 的能力,这类操作…

[100天算法】-最短无序连续子数组(day 70)

题目描述 给定一个整数数组,你需要寻找一个连续的子数组,如果对这个子数组进行升序排序,那么整个数组都会变为升序排序。你找到的子数组应是最短的,请输出它的长度。示例 1:输入: [2, 6, 4, 8, 10, 9, 15] 输出: 5 解释: 你只需要…

【计算机网络笔记】Internet网络的网络层——IP协议之IP数据报的结构

系列文章目录 什么是计算机网络? 什么是网络协议? 计算机网络的结构 数据交换之电路交换 数据交换之报文交换和分组交换 分组交换 vs 电路交换 计算机网络性能(1)——速率、带宽、延迟 计算机网络性能(2)…

WebDAV之π-Disk派盘 + Keepass2Android

推荐一款密码管理器,允许人们使用复杂的组合进行登录,而不必记住所有的组合。 Keepass2Android可以支持大多数安卓互联网浏览器, Android设备上同步软件,还支持通过WebDAV添加葫芦儿派盘。 Keepass2Android 目前安全方面最大的问题之一是大多数人几乎在任何地方都使用通用…

windows下安装es及logstash、kibna

1、安装包下载 elasticsearch https://www.elastic.co/cn/downloads/past-releases#elasticsearch kibana安装包地址: https://www.elastic.co/cn/downloads/past-releases/kibana-8-10-4 logstash安装包地址: https://www.elastic.co/cn/downloads/past…

18 Linux 阻塞和非阻塞 IO

一、阻塞和非阻塞 IO 1. 阻塞和非阻塞简介 这里的 IO 指 Input/Output(输入/输出),是应用程序对驱动设备的输入/输出操作。当应用程序对设备驱动进行操作的时候,如果不能获取到设备资源,那么阻塞式 IO 就会将对应应用…

CVE-2023-25194 Kafka JNDI 注入分析

Apache Kafka Clients Jndi Injection 漏洞描述 Apache Kafka 是一个分布式数据流处理平台,可以实时发布、订阅、存储和处理数据流。Kafka Connect 是一种用于在 kafka 和其他系统之间可扩展、可靠的流式传输数据的工具。攻击者可以利用基于 SASL JAAS 配置和 SASL …

文本生成高精准3D模型,北京智源AI研究院等出品—3D-GPT

北京智源AI研究院、牛津大学、澳大利亚国立大学联合发布了一项研究—3D-GPT,通过文本问答方式就能创建高精准3D模型。 据悉,3D-GPT使用了大语言模型的多任务推理能力,通过任务调度代理、概念化代理和建模代理三大模块,简化了3D建模的开发流程…

Linux 进程的管道通信

文章目录 无名管道pipe有名管道 进程之间的通信:Linux环境下,进程地址空间相互独立,每个进程各自有不同的用户地址空间。任何一个进程的全局变量在另外一个进程中都看不到,所以进程之间不能相互访问,要交换数据必须通过…

java学习part01

15-Java语言概述-单行注释和多行注释的使用_哔哩哔哩_bilibili 1.命令行 javac编译出class文件 然后java运行 2. java文件每个文件最多一个public类 3.java注释 单行注释 // 多行注释 文档注释 文档注释内容可以被JDK提供的工具javadoc所解析,生成一套以网页文…

赛氪ETTBL全国商务英语翻译大赛入榜国内翻译赛事发展评估报告

中国外文局下属CATTI项目管理中心出具2023 国内翻译赛事发展评估报告,ETTBL全国商务英语翻译大赛赫然在榜 2023年11月6日,继2022年首次发布国内翻译赛事发展评估报告后,中国外文局CATTI项目管理中心和中国外文界平台联合发布了《2023国内翻译…

JVM字符串常量池StringTable

目录 一、StringTable为什么要调整 二、String的基本特性 三、String的内存分配 四、字符串拼接操作 五、intern()方法 六、Stringtable的垃圾回收 七、G1中String去重操作 一、StringTable为什么要调整 jdk7之前,hotspot对于方法区的实现是永久代&#xff…

基于若依的ruoyi-nbcio流程管理系统仿钉钉流程json转bpmn的flowable的xml格式(排它条件网关)

更多ruoyi-nbcio功能请看演示系统 gitee源代码地址 前后端代码: https://gitee.com/nbacheng/ruoyi-nbcio 演示地址:RuoYi-Nbcio后台管理系统 这个章节来完成并行网关与排它条件网关的功能 1、前端 目前就修改了排它条件网关的前端条件部分&#xf…

嵌入式养成计划-52----ARM--开发板介绍--相关硬件基础内容介绍--GPIO讲解

一百三十一、开发板介绍 131.1 核心板介绍 131.2 拓展板 一百三十二、相关硬件基础内容介绍 132.1 PCB PCB( Printed Circuit Board),中文名称为印制电路板,又称印刷线路板, 是重要的电子部件,是电子元器…

springboot全局拦截sql异常

起因:非法用户可通过特定的输入(如输入内容超长)等操作,使后台逻辑发生错误,从而使后台sql语句暴露至前台,进而为sql攻击提供条件 处理流程:经查找com.mysql.cj.jdbc.exceptions的父类为SQLException,在全局异常处理类中增加如下配置,经测试不起作用 ExceptionHandler(SQLExce…

款网络拓扑自动扫描工具

Topology-Scanner是WeOps团队免费开放的一个网络拓扑自动扫描模块,可以自动发现网络设备的类型、网络设备之间的互联 使用方式 java -jar ./topology-scanner.jar --config_path./config/ 配置说明 1. 拓扑发现请求参数文件(request.json) ips [全网发现] 模式时…

asp.net core weapi 结合identity完成登录/注册/角色/权限分配

1.安装所需要的nuget包 <PackageReference Include"Microsoft.AspNetCore.Identity.EntityFrameworkCore" Version"6.0.24" /><PackageReference Include"Microsoft.EntityFrameworkCore" Version"6.0.24" /><PackageR…

Git应用(1)

一、Git Git(读音为/gɪt/。中文 饭桶 )是一个开源的分布式版本控制系统&#xff0c;可以有效、高速地处理从很小到非常大的项目版本管理。 了解更多可到GIT官网&#xff1a;Git - Downloads GIT一般工作流程如下&#xff1a; 1&#xff0e;从远程仓库中克隆 Git 资源作为本地…

线程安全问题解析

线程内存模型 线程在工作的时候&#xff0c;如果涉及到需要访问对象的某个成员变量&#xff0c;比如下面的这个类里的amount 属性&#xff1a; class Goods {private int amount;// balabala.....} 线程在运行期间&#xff0c;首先把这个属性从主内存里load进自己的工作内存&…

leetcode:160. 相交链表

一、题目 原题链接&#xff1a;160. 相交链表 - 力扣&#xff08;LeetCode&#xff09; 函数原型&#xff1a; struct ListNode *getIntersectionNode(struct ListNode *headA, struct ListNode *headB) 二、思路 判断两个链表是否相交&#xff0c;只要判断两个链表是否有相同的…
最新文章