本文章是保姆级别的源码编译教程,任何想要从源码编译Netron的人员,都可以按照此教程进行编译。其中特别针对了国内无法下载打包工具的问题,特意改写了Makefile文件;另外,为了能够少些node工具方面的麻烦,我们将从安装高版本的node工具到编译过程都走一遍。
前提:如果在后续编译Netron的时候没有报这种错误——“cannot find module fs/promises",您可选择不安装高版本的node工具。如上错误是在electron-builder 打包时的保存,主要原因是node工具的版本过低,这一般是因为我们在安装node工具的时候采用了诸如此类的命令安装——“apt install npm",这样安装后的npm和node命令版本都是过低的。
因此,如果后续编译报了如上所述的错误,那么必须先安装高版本的node工具。
可从node.js的国内官网进行下载,网址如下所示:
http://nodejs.cn/download/
进入后,我们根据自己的系统进行安装下载,本人开发环境是linux-x64,读者如果想要毫无差错的按照本教程,可以使用跟我一致的系统linux-x64。在node.js官网中,我选择了如下图中的linux二进制文件x64版的node安装文件,这里我下载后保存为${downloads-path}/node-v16.13.0-linux-x64.tar.xz,读者需要根据自己的下载情况更换${donwloads-path}为自己的下载路径。
普通的apt安装的node可以执行执行如下的终端命令:
sudo apt remove npm
在安装高版本的node.js前,我们需要确保系统环境中已经完全卸载了老版本的node.js工具。我们可以执行如下的命令判断是否完全卸载了老版本的node.js工具:
node -v
npm -v
npx -v
如果执行以上三条命令时,bash界面都显示找不到命令,那么就表示node工具卸载完全了。
查看了node.js的wiki安装教程,可以完全跟随如下的安装命令进行安装:
# cd到node安装包的下载目录下
cd ${downloads-path}
# 在系统中创建node的安装目录
sudo mkdir -p /usr/local/lib/nodejs
# 复制二进制文件到刚才创建的安装目录下
sudo tar -xJxf node-v16.13.0-linux-x64.tar.xz -C /usr/local/lib/nodejs
# 修改环境配置文件,追加node的安装目录到环境配置文件中
echo 'export PATH=/usr/local/lib/nodejs/node-v16.13.0-linux-x64/bin:$PATH'>>~/.profile
# 环境配置文件生效
. ~/.profile
执行如下命令验证node安装成功
node -v
npm -v
npx -v
如果安装成功,将会显示出各自的版本号。
该步骤需要确保系统中存在以下的工具命令,可以在终端中执行如下所示的命令,如果bash没有报错,并且显示出正确的工具版本号,那么说明工具是齐全的;否则需要自行安装缺失的工具。
git --version
make --version
python3 --version
pip3 --version
python3 -m pip --version
本人的环境中执行如下命令显示结果如下所示:
git version 2.25.1
GNU Make 4.2.1
为 x86_64-pc-linux-gnu 编译
Copyright (C) 1988-2016 Free Software Foundation, Inc.
许可证:GPLv3+:GNU 通用公共许可证第 3 版或更新版本。
本软件是自由软件:您可以自由修改和重新发布它。
在法律允许的范围内没有其他保证。
Python 3.8.10
pip 20.0.2 from /usr/lib/python3/dist-packages/pip (python 3.8)
pip 20.0.2 from /usr/lib/python3/dist-packages/pip (python 3.8)
# cd到自己的工具目录${workspace-path},自行更换
cd ${workspace-path}
# clone netron源码工程
git clone https://gitcode.net/mirrors/lutzroeder/netron.git
该步骤的主要目的是为了适应国内下载问题,以及缩减编译时间。
# cd到netron目录下
cd netron
# 使用gedit编辑Makefile文件,也可用vi或者vim,凭个人喜好
gedit Makefile
找到Makefle文件中的“build_electron: install”这条显示规则,原文显示如下所示:
build_electron: install
CSC_IDENTITY_AUTO_DISCOVERY=false npx electron-builder --mac --universal --publish never
npx electron-builder --win --x64 --arm64 --publish never
npx electron-builder --linux appimage --x64 --publish never
npx electron-builder --linux snap --x64 --publish never
修改上述内容:注释跟自身开发系统不同的打包命令,比如我是linux-x64,因此我注释掉了--mac和--win的命令;同时在未注释的打包命令中加入华为云打包工具的镜像源网址。修改后的Makefile如下图所示:
build_electron: install
# CSC_IDENTITY_AUTO_DISCOVERY=false npx electron-builder --mac --universal --publish never
# npx electron-builder --win --x64 --arm64 --publish never
ELECTRON_BUILDER_BINARIES_MIRROR=https://mirrors.huaweicloud.com/electron-builder-binaries/ npx electron-builder --linux appimage --x64 --publish never
ELECTRON_BUILDER_BINARIES_MIRROR=https://mirrors.huaweicloud.com/electron-builder-binaries/ npx electron-builder --linux snap --x64 --publish never
# 清除编译缓存
make clean
# 正式编译
make build
编译完成后,将在netron/dist中发现Netron的可执行程序Netron-5.3.7.AppImage:
可直接运行该可执行程序:
./dist/Netron-5.3.7.AppImage
运行后,将会在显示出Netron的主界面,我们可以直接打开Netron支持的模型文件,以下是我在Netron中打开Caffe模型的效果图:
至此,Netron的编译过程就结束了。