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

一、拉取源码部分

官网文档:构建说明 | Electron

VPN代理购买及配置

个人购买链接是首页

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

另外配置系统代理:

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

附件为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相关报错可以尝试设置

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

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

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

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

原因及解决办法:使用官网最新的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会将相关代码全部同步到该版本对应的版本

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

总结:

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

二.交叉编译之源码修改 

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

修改点:

**文件1:**electron/src/v8/src/base/platform/platform-posix.cc ubuntu20.04源码交叉编译electron,在arm+centos(银河麒麟v10等)系统中使用,适应pagesize:65535_第5张图片

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

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

**文件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

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

四、完整源码编译环境

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

 

你可能感兴趣的:(electron,electron,arm,centos)