小型企业网站开发价格,网络推广公司利润如何,旅行社网站开发 论文,中国互联网中心官网转载请注明出处#xff1a;https://blog.csdn.net/kong_gu_you_lan/article/details/136508294 本文出自 容华谢后的博客 0.写在前面
本篇文章是用来记录编译Linux版本CEF的步骤和踩过的坑#xff0c;以防止后续再用到的时候忘记#xff0c;同时也希望能够帮助到遇到同样问… 转载请注明出处https://blog.csdn.net/kong_gu_you_lan/article/details/136508294 本文出自 容华谢后的博客 0.写在前面
本篇文章是用来记录编译Linux版本CEF的步骤和踩过的坑以防止后续再用到的时候忘记同时也希望能够帮助到遇到同样问题的同学。
简单介绍下CEFCEF的全称是Chromium Embedded FrameworkChromium嵌入式框架它是一个开源的软件框架用于嵌入Chromium浏览器引擎到其他应用程序中。允许开发者将Chromium的强大的Web渲染引擎嵌入到他们自己的应用程序中以实现内嵌的浏览器功能目前支持Windows、Linux、macOS平台。
本文的开发环境使用的是VMware虚拟机在上面安装了Ubuntu 20.04.4 64位操作系统分配了200G的硬盘空间16G内存12核心CPU编译时间大概在5小时左右。
1.准备工作
因为Chromium的源码都在外面的世界所以在下载源码之前先要在Ubuntu系统上开启代理本文中使用的是Clash工具在GitHub中可以搜索到Linux版本客户端。
1.1 安装Git
使用以下命令安装
sudo apt-get install git设置Git网络代理
git config --global http.proxy http://127.0.0.1:端口号git config --global https.proxy https://127.0.0.1:端口号下载源码的过程中可能会报Git缓存的异常可以通过以下命令把缓存设置的大一些
sudo git config --global http.postBuffer 5242880000sudo git config --global https.postBuffer 52428800001.2 配置depot_tools
Chromium使用了depot_tools来管理代码先通过Git拉取代码
git clone https://chromium.googlesource.com/chromium/tools/depot_tools.git配置环境变量
export PATH$PATH:$HOME/depot_tools注意文章中是把depot_tool下载到了【home/用户名】目录下所以使用【$HOME】代表环境变量要根据实际下载的路径修改。
源码的位置在这里 1.3 配置下载工具代理
在【home/用户名】目录下新建一个**.boto**文件
[boto]
proxy127.0.0.1
proxy_port端口号配置环境变量
export NO_AUTH_BOTO_CONFIG$PATH:$HOME/.boto2.源码下载
2.1 创建目录结构
当前处于【home/用户名】目录下执行以下命令创建几个文件夹
mkdir CEF cd CEF mkdir automate mkdir chromium_git最终的目录结构是这样的
~/CEF/automate/automate-git.py/chromium_git/cef/chromium/update.sh~/depot_tools/2.2 下载automate-git.py脚本
当前在CEF目录下需要切换到automate目录下执行下面的命令下载脚本
cd automatewget https://bitbucket.org/chromiumembedded/cef/raw/master/tools/automate/automate-git.py2.3 创建update.sh脚本
当前在automate目录下需要切换到chromium_git目录下
cd ..cd chromium_git脚本内容
python3 ../automate/automate-git.py --download-dir/home/alidili/CEF/chromium_git --branch5414 --chromium-checkout109.0.5414.120 --depot-tools-dir/home/alidili/depot_tools --no-distrib --no-build其中 --branch 是CEF的分支版本可以指定需要的版本如果需要最新版本直接去掉这个参数就可以–chromium-checkout 是Chromium源码的Tag版本如果不需要指定可以去掉。注意如果需要指定版本CEF的版本和Chromium的版本要保持一致。
–download-dir 后的路径修改成你设备上的实际路径alidili是用户名–depot-tools-dir 改成在1.2中下载的depot_tools的路径。
2.4 下载源码
当前在chromium_git目录下执行下面的命令
chmod 755 update.sh./update.sh可以看到下面的进度提示 提示这个就代表下载完了如果中途下载失败了重新执行上面的命令就可以了 3.源码编译
3.1 支持音视频
源码下载完成后需要修改下支持音视频打开这个头文件
chromium_git/chromium/src/third_party/ffmpeg/chromium/config/Chromium/linux/x64/config_components.h
#define CONFIG_SIPR_PARSER 1 由0修改为1启用FFmpeg。3.2 生成工程
终端输入这个命令
export GN_DEFINESuse_sysroottrue symbol_level1 is_cfifalse use_thin_ltofalse use_vaapifalse ffmpeg_brandingChrome proprietary_codecstrue is_official_buildtrue use_gnome_keyringfalse chrome_pgo_phase0当前在chromium_git目录下切换到cef目录下执行生成工程脚本
cd chromium/src/cef./cef_create_projects.sh看到这个提示就代表构建成功了 3.3 编译cefclient与chrome_sandbox
当前在cef目录下切换到src目录下终端输入下面的命令
cd ..ninja -C out/Release_GN_x64 cefclient chrome_sandbox如果想要生成Debug版本Release_GN_x64改成Debug_GN_x64就可以了。
编译过程十分漫长大概五六个小时看到下面的提示就代表编译成功了 生成的文件如下 3.4 生成CEF二进制分发包
当前在src目录下切换到tools目录下执行下面的命令
cd cef/tools./make_distrib.sh --ninja-build --minimal --x64-build这个过程还比较快出现下面的提示就成功了 生成的文件如下 到这里整个CEF就编译完成了。
生成的cefclient在/home/alidili/CEF/chromium_git/chromium/src/out目录下
生成的分发包在/home/alidili/CEF/chromium_git/chromium/src/cef/binary_distrib目录下
4.遇到的问题
4.1 磁盘空间
源码编译缓存大概会占用100多G的空间如果用虚拟机的话硬盘空间一定要预留够大概200G差不多。
4.2 depot_tools环境变量
Chromium是使用depot_tools来管理源码的如果拉取源码的时候提示找不到fetch指令那一定是环境变量的问题了仔细看下路径设置的对不对。
4.3 Git网络代理
记得一定要给Git设置网络代理不能拉取源码会一直超时梯子我用的收费的Ghelper里面有Clash的订阅。
4.4 下载源码不全怎么办
在2.4步骤中使用update.sh下载源码因为Chroium源码比较大中间可能因为网络原因导致下载超时或者个别文件下载不全这个时候再次执行update.sh也可能同步不全。
这个时候在 /CEF/chromium_git/chromium/src 目录下执行下面的命令同步Chromium的源码
gclient sync4.5 编译总是失败
编译的时候可能会报一些异常这些异常大部分是因为源码不全导致的使用下面的命令重置下代码
git reset --hard然后删除 /CEF/chromium_git 目录和 /CEF/chromium_git/chromium/src 目录下的cef目录然后重新执行update.sh脚本即可。
4.6 编译过程中提示No such file or directory: ‘gcc’
提示缺什么库通过下面的命令安装什么就可以了
sudo apt install gcc4.7 编译过程中提示提示 gtk/gtk.h file not found
同4.6缺什么安装什么就可以了
sudo apt-get install libgtk-3-0sudo apt install libgtk-3-dev安装了上面的gtk库有可能还是提示找不到配置下环境变量
export CPATH$CPATH:/usr/include/gtk-3.0
export CPATH$CPATH:/usr/include/gtk-3.0/gtk
export CPATH$CPATH:/usr/include/gtk-3.0/gdk
export CPATH$CPATH:/usr/include/gtk-3.0/unix-print4.8 不要尝试修改源码解决编译问题
编译中遇到的99%的问题都是因为源码不全或者缺少相关库导致的不要试图修改源码解决问题不然会发送连锁的错误反应浪费时间。
如果遇到编译无论如何都过不了的问题相信我不要做别的操作了删除所有源码重新按照步骤再来一遍。
5.写在最后
下载和编译的过程中可能会遇到各种各样奇怪的问题奇怪到各个搜素引擎都搜不到答案ChatGPT也给不出切实的解决方案不断的查搜索引擎、查文档、查StackOverFlow不断的换提问的方式查到头脑发昏心情不好这个时候千万不要放弃问题离解决只差一步了当看到编译成功的提示时一切都是值得的守得云开见月明。
到这里Chromium CEF源码的编译就完成了有问题可以给我留言评论谢谢。