最近在使用龙芯 3A5000, 但是苦于寻找开源的可以自己编译的笔记软件。寻找了不少开源产品比如 Anytype。但都因为依赖过于复杂,无法很好的移植在龙芯平台上运行 QAQ
好在最后尝试了一下思源笔记的编译,比较顺利地完成了,简单分享一下编译过程:
-
第一步,获取源码,可以在 github 上直接获取: https://github.com/siyuan-note/siyuan
-
设置龙芯可以使用的 electron 源:
export ELECTRON_MIRROR=https://github.com/darkyzhou/electron-loong64/releases/download/ export electron_use_remote_checksums=1
-
由于平台支持原因,此时不能直接执行 pnpm install,需要安装有编译好的龙芯版本的 electron:
pnpm install electron@v35.4.0 -D
-
下一步是安装修改过的 electron-builder,以支持龙芯 CPU 的构建
"devDependencies": { + "@darkyzhou-powered/electron-builder": "25.1.8", - "electron-builder", "xxxx.xxx.xxx" }
-
此处修改后进行 pnpm install,可能会出现依赖问题,按照提示降级即可,暂时未出现问题
-
编译 kernel,在执行 build 之前,修改 kernel 目录下的 go.mod,更改如下:
+ github.com/go-ole/go-ole v1.3.1-0.20250305162226-6867ec158e36 - github.com/go-ole/go-ole v1.3.0
老版本依赖不支持 loong64 架构,新版添加了支持。由于 siyuan 仓库未更新,只好手动更新一下。 更新完成后,即可使用
cd kernel && go build --tags "fts5" -o "../app/kernel-linux-loong64/SiYuan-Kernel"
进行构建了。 -
随后,重新切换到 app 目录下,创建一个名为
electron-builder-linux-loong64.yml
的文件,内容如下:productName: "SiYuan" appId: "org.b3log.siyuan" asar: false compression: "store" copyright: "© 2024 Yunnan Liandi Technology Co., Ltd." artifactName: "siyuan-${version}-${os}-loong64.${ext}" extraMetadata: main: "electron/main.js" directories: output: "build" files: - "electron" extraFiles: - from: "../LICENSE" to: "LICENSE" linux: icon: "src/assets/icon.icns" category: "Utility" executableName: "siyuan" desktop: { entry: { Name: "SiYuan", Comment: "Refactor your thinking", Type: "Application", Categories: "Utility;" } } extraResources: - from: "kernel-linux-loong64" to: "kernel" target: - target: "tar.gz" arch: "loong64" # - target: "AppImage" # arch: "loong64" - target: "deb" arch: "loong64" extraResources: - from: "changelogs" to: "changelogs" - from: "stage" to: "stage" - from: "guide" to: "guide" filter: "!**/{.DS_Store,.git,.gitignore,.idea}" - from: "appearance/boot" to: "appearance/boot" filter: "!**/{.DS_Store}" - from: "appearance/icons" to: "appearance/icons" filter: "!**/{.DS_Store}" - from: "appearance/langs" to: "appearance/langs" filter: "!**/{.DS_Store}" - from: "appearance/emojis" to: "appearance/emojis" filter: "!**/{.DS_Store}" - from: "appearance/themes/midnight" to: "appearance/themes/midnight" filter: "!**/{.DS_Store,custom.css}" - from: "appearance/themes/daylight" to: "appearance/themes/daylight" filter: "!**/{.DS_Store,custom.css}" - from: "appearance/fonts" to: "appearance/fonts" filter: "!**/{.DS_Store}" - from: "pandoc/pandoc-linux-loong64.zip" to: "pandoc.zip"
-
注意:对于龙芯平台上运行构建,其中,压缩 tgz 用到了 7zip,由于随包分发的 7za 不支持 loongarch64,因此需要手动替换一下:
cp /usr/bin/7za app/node_modules/.pnpm/7zip-bin@5.2.0/node_modules/7zip-bin/linux/loong64
。请根据实际情况创建文件夹!其次,deb 打包由于使用了第三方可执行文件,暂时没有龙芯架构的可执行文件,要想成功打包 deb 可能需要 latx 二进制翻译的支持。交叉编译时无需关注。 -
修改 package.json,添加我们自定义的构建配置:
"scripts": { "dist-linux-loong64": "ELECTRON_MIRROR=https://github.com/darkyzhou/electron-loong64/releases/download/ electron-builder --linux --config electron-builder-linux-loong64.yml --publish=never" }
-
最后,执行
pnpm run build && pnpm run dist-linux-loong64
就可以完美打包啦~
附上截图:
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于