麒麟V10系统下编译libcef_dll

news2024/11/24 11:58:45

目录

      • 前言
      • 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.coloradmin.cn/o/1194811.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

QDockWidget组件的隐藏与显示(按钮控制)

本文内容包括: 1、控制按钮的点击效果美化; 2、用按钮控制QDockWidget组件的隐藏与显示; 参考前提:已有.ui文件、已有QDockWidget组件、已有一个控制QDockWidget组件的按钮 实现效果: DockWidget组件的隐藏与显示&…

贝锐蒲公英智慧运维方案:实现远程网络监控、管理、维护工业设备

为了提升运维效率,能够及时发现和响应设备的故障、异常和潜在问题。 越来越多的企业都在搭建“集中式”的远程智慧运维体系,以提高运维效率和降低成本。 但是,受限于网络,将不同地域的资源和信息进行整合,实现统一管理…

nodejs+vue+python+PHP+微信小程序-安卓-软件项目开发管理系统的设计与实现-计算机毕业设计

目 录 摘 要 I ABSTRACT II 目 录 II 第1章 绪论 1 1.1背景及意义 1 1.2 国内外研究概况 1 1.3 研究的内容 1 第2章 相关技术 3 2.1 nodejs简介 4 2.2 express框架介绍 6 2.4 MySQL数据库 4 第3章 系统分析 5 3.1 需求分析 5 3.2 系统可行性分析 5 3.2.1技术可行性:…

【系统救援】 Ubuntu重启失败,报错:UNEXPECTED INCONSISTENCY; RUN fsck MANUALLY

问题定位及处理 查看错误信息:/dev/sda3 contains a file system with errors, check forced. /dev/sda3: Inodes that were part of a corrupted orphan linked list found. /dev/sda3: UNEXPECTED INCONSISTENCY; RUN fsck MANUALLY. (i.e., without -a or -p o…

c语言:用指针解决有关字符串等问题

题目1&#xff1a;将一个字符串str的内容颠倒过来&#xff0c;并输出。 数据范围&#xff1a;1≤len(str)≤10000 代码和思路&#xff1a; #include <stdio.h> #include<string.h> int main() {char str1[10000];gets(str1);//读取字符串内容char* p&str1[…

Pydantic:数据类型确认和解析神器

大家好&#xff0c;数据验证和解析是软件开发中的重要任务&#xff0c;特别是在处理用户输入或外部数据源时尤为重要&#xff0c;Python凭借其简洁性和多功能性&#xff0c;在这些任务中提供了各种库的帮助。在本文中将探讨Pydantic&#xff0c;介绍其特点&#xff0c;并提供一…

PSP - 蛋白质复合物结构预测 Template Pair 特征 Mask 可视化

欢迎关注我的CSDN&#xff1a;https://spike.blog.csdn.net/ 本文地址&#xff1a;https://spike.blog.csdn.net/article/details/134333419 在蛋白质复合物结构预测中&#xff0c;在 TemplatePairEmbedderMultimer 层中 &#xff0c;构建 Template Pair 特征的源码&#xff0c…

归并排序 图解 递归 + 非递归 + 笔记

前置知识&#xff1a;讲解019-算法笔试中处理输入和输出&#xff0c;讲解020-递归和master公式 (1)左部分排好序&#xff0c;右部分排好序&#xff0c;利用merge过程让左右整体有序(2)merge过程:谁小拷贝谁&#xff0c;直到左右两部分所有的数字耗尽(3)递归实现和非递归实现(4…

Nacos使用指南

Nacos使用指南 1.认识Nacos Nacos是SpringCloudAlibaba的一个组件&#xff0c;遵循SpringCloud规范 2.Nacos的优势 1.支持服务端主动检测服务提供者状态。临时实例采用心跳检测&#xff0c;非临时实例采用主动检测 2.Nacos支持服务列表变更消息推送&#xff0c;消息更加及…

设计模式之建造者(Builder)

用来构建复杂对象 分离复杂对象的构建和表示 同样的构建过程可以创建不同的表示 当有一个复杂的对象&#xff0c;构建它的时候&#xff0c;比较复杂 例如&#xff0c;构建一个对象&#xff0c;要传入50个参数&#xff0c;可以先构建part1&#xff0c;再构建part2…最后调用bu…

Mysql数据库 14.SQL语言 视图

一、视图的概念 视图&#xff1a;就是由数据库中一张或多张表根据特定的条件查询出的数据狗造成的虚拟表 二、视图的作用 安全性&#xff0c;简单性 三、视图的语法 语法 create view 视图表 as select_statement; 代码实现 #创建视图 将查询结果创建称为视图&#x…

华为ipsec vpn双链路主备备份配置案例

配置就是这配置&#xff0c;已查官方也是这样配置&#xff0c;意外是完成后不通&#xff0c;待以后处理&#xff01; FW_A配置&#xff1a; dhcp enable ip-link check enable ip-link name check_b destination 2.2.2.2 interface GigabitEthernet1/0/0 mode icmp next-hop …

vue2+elementui使用MessageBox 弹框$msgbox自定义VNode内容:实现radio

虽说实现下面的效果&#xff0c;用el-dialog很轻松就能搞定。但是这种简单的交互&#xff0c;我更喜欢使用MessageBox。 话不多说&#xff0c;直接上代码~ <el-button type"primary" size"mini" click"handleApply()" >处理申请</el-b…

实操创建属于自己的亚马逊云科技VPS服务:Amazon Lightsail

本文主要讲述如何独立创建自己的亚马逊云科技VPS服务&#xff0c;希望此文能帮助你对亚马逊云科技VPS服务也就是Amazon Lightsail&#xff0c;有个新的认识&#xff0c;对所使用的VPS有所帮助。 Amazon Lightsail是一款无论云计算的新手还是专家&#xff0c;都可通过其快速启动…

MySQL中UUID主键的优化

UUID&#xff08;Universally Unique IDentifier 通用唯一标识符&#xff09;&#xff0c;是一种常用的唯一标识符&#xff0c;在MySQL中&#xff0c;可以利用函数uuid()来生产UUID。因为UUID可以唯一标识记录&#xff0c;因此有些场景可能会用来作为表的主键&#xff0c;但直接…

C++——基础

初学C的时候&#xff0c;有没有想过&#xff0c;为什么C支持重载&#xff0c;而C不支持重载呢&#xff1f;&#xff1f; 其实&#xff0c;一个程序运行起来都要经过四步骤 预处理编译汇编链接 预处理阶段会经过去注释&#xff0c;宏替换&#xff0c;头文件展开&#xff0c;条…

SPSS曲线回归

前言&#xff1a; 本专栏参考教材为《SPSS22.0从入门到精通》&#xff0c;由于软件版本原因&#xff0c;部分内容有所改变&#xff0c;为适应软件版本的变化&#xff0c;特此创作此专栏便于大家学习。本专栏使用软件为&#xff1a;SPSS25.0 本专栏所有的数据文件请点击此链接下…

RabbitMQ的 五种工作模型

RabbitMQ 其实一共有六种工作模式&#xff1a; 简单模式&#xff08;Simple&#xff09;、工作队列模式&#xff08;Work Queue&#xff09;、 发布订阅模式&#xff08;Publish/Subscribe&#xff09;、路由模式&#xff08;Routing&#xff09;、通配符模式&#xff08;Topi…

快速入门安装及使用git与svn的区别常用命令

一、导言 1、什么是svn&#xff1f; SVN是Subversion的简称&#xff0c;是一个集中式版本控制系统。与Git不同&#xff0c;SVN没有分布式的特性。在SVN中&#xff0c;项目的代码仓库位于服务器上&#xff0c;团队成员通过向服务器提交和获取代码来实现版本控制。SVN记录了每个…

C语言-for循环入门代码

#include <stdio.h>int main() {int count;for (count 0; count < 10; count){printf("1\n");}system("pause");return 0; }1 1 1 1 1 1 1 1 1 1 请按任意键继续. . .灵活的for循环 死循环 while(1) {... }#include <stdio.h> int main(…