electron程序適配loongArch64

一、原始項目

1.原始程序適配arm,x86國產linux設備;新增需求適配loongArch64+麒麟v10sp1。
2.原始devDependencies

"devDependencies": {"electron": "^17.2.0","electron-builder": "^23.0.3",}

二、可能遇到的問題以及適配步驟

1.項目運行

問題:項目運行electron下載失敗
解決方案:devDependencies中electron版本修改為龍芯開源社區支持的electron的相近版本,下載依賴時先注釋掉electron,下載其他依賴,其他依賴正常下載按照提示解決錯誤即可或者嘗試切換龍芯開源社區鏡像源;然后龍芯開源社區下載對應electron解壓到node_modules/electron,然后再devDependencies解開注釋;例如我的項目修改為17.4.0使用如下龍芯開源社區截圖

2.打包問題electron下載失敗

問題:打包失敗提示electron下載問題
解決方案:常規問題適用于任何環境打包提示electron下載失敗網絡問題,手動下載拷貝到對應目錄,龍芯開源社區下載electron對應版本.zip拷貝到~/.cache/electron目錄;如下解決electron打包electron下載失敗問題

3.打包問題electron-builder問題

問題:electron-builder源碼不支持loong架構,electron-builder會有三個問題拆解到4和5
解決方案:electron-builder源碼不支持loong架構,需要修改源碼,可以去github找也可以自己改,需要改動地方不多,已我的版本為例,如下并沒有loong64的electron-builder
增加loong64修改為如下圖
electron-builder
node_modules下一共修改三個依賴app-builder-lib,builder-util,electron-builder;這三個依賴下有全局搜arm64類似這樣的地方增加loong64即可(因為node中process.arch識別的是loong64)

4.打包問題fpm問題

問題:打包失敗提示fpm問題
解決方案:兩步走解決(常規問題國產機器打包均有這個問題,也適用于常規arm,x86打包提示fpm的解決方案
第一步:將下載失敗的連接對應的fpm包手動下載,拷貝到指定目錄~/.cache/electron-builder/fpm/并且解壓,如下圖:fpm
第二步:手動下載fpm和ruby,下載命令如下
sudo apt update
sudo apt install ruby-full
sudo gem install fpm
失敗的話去搜一下相關怎么下載,下載成功后,刪除~/.cache/electron-builder/fpm/fpm-1.9.3-2.3.1-linux-x86/fpm和 ~/.cache/electron-builder/fpm/fpm-1.9.3-2.3.1-linux-x86/lib/ruby/bin.real/ruby;然后ln -s創建軟連接指向你下載的fpm和ruby如下圖
fpm解決
將不會在提示fpm相關問題

5.安裝/打包問題,架構不符

問題:成功打包為deb后安裝提示機構不符如下在這里插入圖片描述
原因:nodejs的process.arch識別到的架構是loong64,實際uname -m 架構是loongarch64,如下圖:架構
解決方案:需要將打好的包解壓,命令如下:
ar -x xxx.deb
解壓后control的壓縮文件進行解壓,命令如下:
tar -xf control.tar.xz
加壓后會有control文件,cat查看Architecture:loong64如下:Architecture:loong64
修改為loongarch64,在打成deb包,可以通過ai生成腳本進行解壓修改打包如下是我通過ai生成的腳本代碼(沒試過正確性,有問題通過ai可以微調)

#!/bin/bash# 參數檢查
if [ $# -ne 2 ]; thenecho "用法: $0 <deb包路徑> <新架構名稱>"exit 1
fiinput_deb="$1"
new_arch="$2"# 提取目錄和文件名
dir=$(dirname "$input_deb")
filename=$(basename "$input_deb" .deb)
output_deb="${dir}/${filename}_${new_arch}.deb"# 創建臨時目錄
temp_dir=$(mktemp -d)
trap 'rm -rf "$temp_dir"' EXIT TERM INT# 解壓deb包
ar x "$input_deb" --output "$temp_dir" || { echo "解壓deb包失敗"; exit 1; }# 進入臨時目錄處理文件
(cd "$temp_dir" || exit 1# 解壓control.tar.xztar xf control.tar.xz || { echo "解壓control.tar.xz失敗"; exit 1; }# 修改Architecture字段sed -i "s/^Architecture: .*/Architecture: ${new_arch}/" control || { echo "修改control文件失敗"; exit 1; }# 重新打包control.tar.xztar cJf control.tar.xz control || { echo "重新打包control.tar.xz失敗"; exit 1; }# 重新打包deb文件ar r "$output_deb" debian-binary control.tar.xz data.tar.* || { echo "重新打包deb失敗"; exit 1; }
) || exit 1echo "成功生成: $output_deb"

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/93388.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/93388.shtml
英文地址,請注明出處:http://en.pswp.cn/web/93388.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

窗口系統(windowing system)的架構思考

我想做一個通用窗口系統&#xff0c;窗口、控件等&#xff0c;一切都抽象成樹形結構的層疊矩形塊&#xff0c;可支持半透明、模糊等混合選項&#xff0c;那么每個窗口是不是需要一塊存儲區&#xff1f;我之前的代碼為了計算模糊&#xff0c;還不止一塊&#xff0c;要三塊。那么…

極簡工具箱:安卓工具箱合集

軟件介紹 極簡工具箱是一個安卓工具箱合集軟件&#xff1b;軟件支持安卓。 它支持將近 400 個實用功能&#xff0c;支持將近 40 款單機游戲&#xff0c;提供 140 多個實用網站導航&#xff0c;包括電子書導航、學習導航、設計導航、產品經理導航、大數據導航、文檔格式轉換、…

TOGAF八步一法筆記2

業務需求和驗收標準一旦方向確定&#xff0c;接下來的關鍵就是&#xff1a;創建業務需求、明確驗收標準當“預備階段”完成&#xff0c;能力愿景和范圍被管理層確認后&#xff0c;我們正式進入能力建設的“實施軌道”。而這個軌道的起點&#xff0c;是兩個核心動作&#xff1a;…

各種讀取csv文件的工具性能比較

在翻閱calamine作者的quick-csv存儲庫時無意中看到有個10年前的csv讀取比賽, 把比賽選手源程序下載下來測試看到底有多快。 git clone https://bitbucket.org/ewanhiggs/csv-game.git這些源程序只有比賽程序本身&#xff0c;依賴的文件有的在主頁&#xff0c;有的在makefile中…

HTML <iframe> 標簽 如何把html寫入iframe標簽

標簽 如何把html寫入iframe標簽 使用srcdoc屬性 HTML iframe 標簽 參考 定義和用法 <iframe> 標簽定義行內框架&#xff08;內聯框架&#xff09;。 行內框架用于在當前 HTML 文檔中嵌入另一個文檔。

Java Spark例子程序

目錄spark基礎&rdddocsRDDspark架構Spark 對比 hadoop MapReducespark maven依賴Spark的checkpointtransformations、shuffle、actionsreduceByKey的用法groupByKey的用法count / count distinct例子&#xff1a;單詞計數例子&#xff1a;一批人員年齡數據求平均(rdd)例子&…

《代碼重生:楊蓉與62.webp》

《代碼重生&#xff1a;楊蓉與62.webp》2045年&#xff0c;星耀城。雨絲斜織在量子玻璃幕墻上&#xff0c;霓虹倒影如液態代碼流淌。楊蓉坐在“時光回溯實驗室”的終端前&#xff0c;面前懸浮著一行行泛黃的日志——那是從2018年GitHub快照中提取的原始構建記錄。她指尖輕點&am…

軟考 系統架構設計師系列知識點之雜項集萃(123)

接前一篇文章:軟考 系統架構設計師系列知識點之雜項集萃(122) 第227題 某公司欲開發一種工業機器人,用來進行汽車零件的裝配。公司的架構師經過分析與討論,給出了該機器人控制軟件的兩種候選架構方案:閉環控制和分層結構。以下對于這兩者候選框架的選擇路由,錯誤的是(…

Sonatype Nexus Repository Manager docker版本安裝

docker 網址 https://hub.docker.com/r/sonatype/nexus3 拉取鏡像 docker pull sonatype/nexus3創建docker docker run -d -p 8081:8081 --name nexus --restart always sonatype/nexus3查看密碼 docker exec nexus cat /nexus-data/admin.password導出docker image 鏡像 …

Java Stream API:讓業務數據處理更優雅

在 Java 業務開發中&#xff0c;我們經常需要對集合數據進行**篩選&#xff08;filter&#xff09;、轉換&#xff08;map&#xff09;、聚合&#xff08;collect&#xff09;**等操作。比如從一批結果中過濾出符合條件的記錄&#xff0c;就像這樣&#xff1a; 假數據&#xf…

Win11和Win10共享打印機提示709用添加Windows憑據來解決的小方法

我們在使用共享打印機打印文件時或者添加共享打印機的時候&#xff0c;遇到了系統提示錯誤709的問題&#xff0c;導致打印失敗、共享失敗&#xff0c;如果你現在正好也遇到了這一問題&#xff0c;那么不妨來看看下面吳師傅使用過的這個方法&#xff0c;希望可以能夠幫助大家有效…

【嵌入式STM32】I2C總結

I2C誕生于上世紀80年代初&#xff0c;由飛利浦&#xff08;現在的恩智浦NXP&#xff09;為解決微控制器與外圍芯片之間繁瑣的連接問題而設計。 僅僅兩根線——SCL&#xff08;時鐘線&#xff09;和SDA&#xff08;數據線&#xff09;&#xff0c;就能實現多設備間的雙向通信。 …

WPF 監控CPU、內存性能

本段代碼是一個封裝的用戶控件<UserControl x:Class"YF_Frame.PerformanceMonitor"xmlns"http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x"http://schemas.microsoft.com/winfx/2006/xaml"xmlns:mc"http://schemas.…

Rust學習筆記(四)|結構體與枚舉(面向對象、模式匹配)

本篇文章包含的內容1 結構體1.1 定義和初始化結構體1.2 Tuple Struct1.3 結構體方法&#xff08;Rust 面向對象&#xff09;1.4 關聯函數2 枚舉2.1 定義和使用枚舉2.2 將數據附加到枚舉的變體中2.3 Option 枚舉2.4 模式匹配2.4.1 match語句2.4.2 if let語句1 結構體 1.1 定義和…

C++——分布式

文章目錄一、什么是分布式&#xff1f;核心特點為什么需要分布式&#xff1f;分布式 vs 集中式常見分布式場景挑戰與難點二、 簡述下CAP理論2.1 簡述2.2 詳細三、 簡述下分布式中的2PC2.1 詳細3.2 簡述三 、簡述下Raft協議3.1 詳細3.2 簡述四 grpc框架4.1 RPC&#xff08;Remot…

Redis面試精講 Day 20:Redis大規模部署性能調優

【Redis面試精講 Day 20】Redis大規模部署性能調優 開篇 歡迎來到"Redis面試精講"系列第20天&#xff01;今天我們將深入探討Redis在大規模部署場景下的性能調優策略&#xff0c;這是高級工程師和架構師面試必考的核心知識點。本文將從操作系統配置、Redis參數調優…

[微服務]ELK Stack安裝與配置全指南

目錄 一、ELK相關介紹 1.1 什么是ELK Stack 1.2 ELK核心組件與功能 1.3 ELK優勢 1.4 ES數據庫結構對比SqlServer 二、安裝ELK 2.1 window安裝 2.2 Docker下環境搭建 2.2.1 安裝7.16.3版本ElasticSearch 2.2.2 安裝7.16.3版本Kibana : 2.2.3 安裝8.0.0版本ElasticSea…

java項目怎么實現用戶行為分析、漏斗轉化、數據可視化報表。

在 Java 項目中實現用戶行為分析、漏斗轉化和數據可視化報表是一個系統性的工作&#xff0c;需要從數據采集、存儲、分析到展示的完整鏈路設計。以下是一個可行的實現方案&#xff1a;1. 整體架構設計建議采用分層架構&#xff1a;數據采集層&#xff1a;收集用戶行為數據數據存…

緩存元數據損壞操作步驟(lvmcache修復)

現象為:機械盤丟失cvol-cmeta卷如圖所示,lvm邏輯卷中缺失緩存的lvm,這邊以只讀cache為例日志現象報錯信息為:lvmcache_cvol failed manual repair required!lvmcache_cvol failed: manual repair required! 這類報錯&#xff0c;本質上是 LVM cache 池&#xff08;cache-pool&…

使用CMAKE-GUI生成Visual Studio項目

使用CMAKE-GUI生成Visual Studio項目第一種&#xff0c;如果我們想把以Cmake構建的項目移植VS上&#xff0c;就可以使用Cmake來生成.sln文件 準備生成的目錄文件先準備好我們要打包的源代碼等文件&#xff08;放在resource下&#xff09;使用cmake-gui工具來構建&#xff08;命…