国产化之Arm64 CPU+银河麒麟系统安装.NetCore
<h1 id="背景">背景</h1><p>某个项目需要实现基础软件全部国产化,其中操作系统指定银河麒麟,银河麒麟就是一个Linux发行版,数据库使用达梦V8,这个数据库很多概念和Oracle相似,CPU平台的范围:龙芯、飞腾、鲲鹏等。</p>
<p>龙芯团队自己支持了.netcore3.1,飞腾之类的是ARM架构,官方已经支持。.netcore3.1仅在 x64 体系结构上支持包管理器安装,对于 ARM 等其他体系结构,必须通过其他一些方式安装 .NET。</p>
<p>这里就以ARM架构举例,其它CPU平台的安装过程都一样,要下载的包不同而已。</p>
<h1 id="环境">环境</h1>
<ul>
<li>主机操作系统:Windows 10</li>
<li>虚拟化工具:QEMU</li>
<li>虚拟机CPU:cortex-a53(ARMv8架构,支持Arm64)</li>
<li>虚拟机操作系统:银河麒麟 v4</li>
</ul>
<h1 id="下载">下载</h1>
<p>.NET Core 3.1的官方下载地址是这里 :https://dotnet.microsoft.com/en-us/download/dotnet/3.1</p>
<p><img src="https://img2022.cnblogs.com/other/73642/202203/73642-20220310074345357-894246091.jpg" alt="img" loading="lazy"></p>
<p>因为这里选择ARMv8架构的CPU,所以下载Linux的Arm64版本;如果是x64架构,就选择x64。</p>
<p>如果是龙芯处理器,请前往龙芯官网下载:http://www.loongnix.cn/index.php/Dotnet</p>
<p>怎么上传到服务器?</p>
<p>如果是下载到本地的,可以通过SFTP上传到服务器;如果想在服务器下载,可以通过wget命令直接下载。</p>
<h1 id="安装">安装</h1>
<h2 id="x64arm处理器">x64、Arm处理器</h2>
<p>进入安装文件目录,我这里是下载到当前用户的根目录了,所以:</p>
<pre><code class="language-powershell">cd ~
</code></pre>
<p>执行以下命令,将安装包解压到当前用户根目录的dotnet文件夹下(可以更换路径):</p>
<pre><code class="language-bash">mkdir -p $HOME/dotnet && tar zxf dotnet-sdk-3.1.416-linux-arm64.tar.gz -C $HOME/dotnet
</code></pre>
<p>注意:不同平台的安装包名字不一样,要修改成你下载的,比如x64平台下的包是 dotnet-sdk-3.1.416-linux-x64.tar.gz 。</p>
<p>然后还需要将dotnet导出到环境变量PATH中,编辑文件 <em>/etc/profile</em> ,在最后添加以下两句:</p>
<pre><code class="language-bash">export PATH=$PATH:$HOME/dotnet
export DOTNET_ROOT=$HOME/dotnet
</code></pre>
<p>然后执行命令:<em>source /etc/profile</em>,让配置生效。</p>
<p>看看dotnet是否安装成功了,执行命令:<em>dotnet –info</em> ,正常应该显示如下:</p>
<p><img src="https://img2022.cnblogs.com/other/73642/202203/73642-20220310074345757-67062147.jpg" alt="img" loading="lazy"></p>
<h2 id="mips龙芯处理器">MIPS、龙芯处理器</h2>
<p>因为没有龙芯处理器,这块只能干说了,因为银河麒麟是Debian系的,所以下载那个deb包,直接命令安装就行了。</p>
<pre><code class="language-shell">sudo apt install ./dotnet-sdk-3.1.11-rc1_loongarch64.deb
</code></pre>
<p>安装完成之后,也通过 <em>dotnet –info</em> 看一下结果。</p>
<h2 id="其它依赖">其它依赖</h2>
<p>如果依赖System.Drawing.Common 程序集,还需要 libgdiplus 6.0.1或更高版本,这个是mono提供的,如果你的CPU平台是arm64或者x64,可以在下面的链接下载这个包,上传到服务器上进行安装:</p>
<p>链接: https://pan.baidu.com/s/1WYIbxqh8OPTHBJWZoWafHw?pwd=pr4q</p>
<p>x64平台这样安装:</p>
<pre><code class="language-shell">sudo apt install ./libgif7_5.1.4-0.3~16.04.1_amd64.deb
sudo apt install ./libgdiplus_6.0.5-0xamarin1+ubuntu1604b1_amd64.deb
</code></pre>
<p>arm64平台:</p>
<pre><code class="language-shell">sudo apt install ./libgif7_5.1.4-0.3~16.04.1_arm64.deb
sudo apt install ./libgdiplus_6.0.5-0xamarin1+ubuntu1604b1_arm64.deb
</code></pre>
<p>如果你是其它CPU平台的,可以参考mono项目的这篇文章:</p>
<p>https://www.mono-project.com/download/stable/</p>
<p>针对这个问题,官方在.NET6中已经放弃了System.Drawing.Common的跨平台属性,也许更好的办法是使用其它图形库代替它,比如:SkiaSharp、Microsoft.Maui.Graphics、ImageSharp 。</p>
<h1 id="测试">测试</h1>
<p>依次执行以下命令:创建一个目录 dotnetsample,然后创建一个web项目,最后运行这个项目。</p>
<pre><code class="language-arduino">cd ~
mkdir dotnetsample
cd ./dotnetsample
dotnet new web
dotnet run --urls=http://*:5000
</code></pre>
<p>在浏览器中访问,显示如下结果:</p>
<p><img src="https://img2022.cnblogs.com/other/73642/202203/73642-20220310074346061-934741810.jpg" alt="img" loading="lazy"></p>
<p>如果走到这一步,那么恭喜你,安装成功了!</p>
<blockquote>
<p>收获更多架构知识,请关注微信公众号 萤火架构。原创内容,转载请注明出处。<br>
<img src="https://img2022.cnblogs.com/other/73642/202203/73642-20220310074346290-1169820180.jpg" alt="扫描二维码关注公众号" loading="lazy"></p>
</blockquote>
</div>
<div id="MySignature" role="contentinfo">
<span class="articleSuffix-flg">
<div id="articleSuffix">
<div class="articleSuffix-left">
<img src="https://images.cnblogs.com/cnblogs_com/bossma/2327976/o_230719042205_qrcode1689740404996.jpg"/>
</div>
<div class="articleSuffix-right">
<item>
<li>
<b>本文作者:</b>
萤火架构
</li>
<li>
<b>本文链接:</b>
https://www.cnblogs.com/bossma/p/15987887.html
</li>
<li>
<b>关于博主:</b>
使用微信扫描左侧二维码关注我的订阅号,每天获取新知识
</li>
<li>
<b>版权声明:</b>
本博客所有文章除特别声明外,均采用
BY-NC-SA
许可协议。转载请注明出处!
</li>
</item>
</div>
<div style="clear:both"></div>
</div>
</span><br><br>
来源:https://www.cnblogs.com/bossma/p/15987887.html
頁:
[1]