ubuntu20.04源码交叉编译electron,在arm+centos(银河麒麟v10等)系统中使用,适应pagesize:65535

本文详细介绍了如何在Ubuntu 20.04上进行Electron源码的交叉编译,以适应arm架构的CentOS系统,特别是针对pagesize为65535的环境。内容涵盖源码拉取、报错解决方案、源码修改以及编译配置,强调了代理设置、源码分支切换、系统代理配置和源码中特定文件的修改。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、拉取源码部分

官网文档:构建说明 | Electron

VPN代理购买及配置

个人购买链接是首页

ubuntu下的代理配置:https://portal.shadowsocks.nz/knowledgebase/185/Windows-or-macOS-or-LinuxClashy-设置方法.html

另外配置系统代理:

附件为git以及npm以及yarn的配置

.gitconfig为git的基本配置,不一定完全合理,但是我是这样配置的,最后拉取成功了

.npmrc为npm的基本配置;.yarnrc为yarn的基本配置。都配置为国内镜像

.gitconfig

[https]
	proxy = socks5://127.0.0.1:7891
[http]
	proxy = socks5://127.0.0.1:7891
	sslVerify = false
[user]
	name = xxxxxxxxx
	email = xxxxxxxxx
[core]
	compression = 0
[pack] 
	deltaCacheSize = 2047m 
	packSizeLimit = 2047m 
	windowMemory = 2047m


.npmrc

registry "https://registry.npm.taobao.org"

sass_binary_site "https://npm.taobao.org/mirrors/node-sass/"
phantomjs_cdnurl "http://cnpmjs.org/downloads"
electron_mirror "https://npm.taobao.org/mirrors/electron/"
sqlite3_binary_host_mirror "https://foxgis.oss-cn-shanghai.aliyuncs.com/"
profiler_binary_host_mirror "https://npm.taobao.org/mirrors/node-inspector/"
chromedriver_cdnurl "https://cdn.npm.taobao.org/dist/chromedriver"


.yarnrc

# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
# yarn lockfile v1


registry "https://registry.npm.taobao.org"
chromedriver_cdnurl "https://cdn.npm.taobao.org/dist/chromedriver"
electron_mirror "https://npm.taobao.org/mirrors/electron/"
lastUpdateCheck 1645151377004
phantomjs_cdnurl "http://cnpmjs.org/downloads"
profiler_binary_host_mirror "https://npm.taobao.org/mirrors/node-inspector/"
sass_binary_site "https://npm.taobao.org/mirrors/node-sass/"
sqlite3_binary_host_mirror "https://foxgis.oss-cn-shanghai.aliyuncs.com/"

拉源码过程中相关报错

报错1: ssl相关报错可以尝试设置

 

 

报错2: canot find。。。,如下图: 

原因及解决办法:使用官网最新的depot_tools,困扰了我两天,我使用的是自己很早以前csdn下载的。

报错3: no such file or directory “npx”或“python”

原因及解决办法:本地nodejs仅npm和node设置了软连接,npx未配置,配置即可。python的话是因为我的ubuntu中为python2和python3,我将python3复制了一个命名为python。

报错4: cannot access https://githubzzzzzzzz。。t

原因及解决办法:git config —global sslVerify “false”

问题5: 卡在building fresh packages不动

解决办法:配置yarn与npm的国内镜像源。参考[转]解决yarn install一直卡在Building fresh packages - 简书

拉完代码之后切换分支:

在 src/electron 目录下执行: $git checkout v12.2.3

在 src 目录下执行:$gclient sync会将相关代码全部同步到该版本对应的版本

及时做好快照是很重要的。

总结:

  • vpn还是要给力,不然总是失败,晚上貌似能好一点。
  • 电脑性能一定要好,无论是cpu还是内存,不然卡到爆

二.交叉编译之源码修改 

   官方代码理论上在arm64机器不管其pagesize是4k、16k、64k,均是可以编译成功的,因为源码是通过接口去获取这个参数,但我们在交叉编译时所用的机器和实际需要运行的机器pagesize参数不一定一致。比如本次我们要适配的就是arm+银河麒麟v10,该系统的内核参数pagesize为65536。查看pagesize的命令:getconf PAGESIZE。

修改点:

**文件1:**electron/src/v8/src/base/platform/platform-posix.cc 

 文件2:electron/src/v8/src/base/sys-info.cc

 

**文件3~n:**全局搜索(我好像总共搜索了三十来个文件,共34处,耐心一点,一不小心就放弃了)

vscode打开electron源码,搜索sysconf(_SC_PAGESIZE),找到之后将其全部替换为目标pagesize,我这里全部修改为了65535.

注意:修改的时候能注释就全注释掉,不要有声明但未使用的变量,否则也会导致编译中断。

 三.交叉编译配置及编译

$ cd src 

// 相关编译工具 

$ export PATH=/home/dev/depot_tools:$PATH 

$ export CHROMIUM_BUILDTOOLS_PATH=`pwd`/buildtools 

// 编译参数 

$ gn gen out/Release --args=’import("//electron/build/args/release.gn") target_cpu="arm64"’

//编译 

$ ninja -C out/Release electron

// LINK这一步非常之久,耐心等待即可。

// test

$ ./electron 即可弹出electron窗体

//打包 

$ ninja -C out/Release electron:electron_dist_zip

 

四、完整源码编译环境

本人有配置好所有环境以及源码拉去完毕的electron交叉编译环境(ubuntu20.04),有需要的可以联系:291540704@qq.com

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

我啥都会

如果觉得对您有帮助,打赏一下吧

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值