# HSL- 5G 网关运行环境搭建

[!!!先备份一下开发板的 /home/root/下的内容以备不时之需!!!]

## 1、安装.net5

https://dotnet.microsoft.com/download/dotnet/5.0

在root备份下的dotnet5也可以直接拷贝到/home/root下

## 2、增加libstdc++库

https://releases.linaro.org/components/toolchain/binaries/6.3-2017.05/aarch64-linux-gnu/

下载文件

```
sysroot-glibc-linaro-2.23-2017.05-aarch64-linux-gnu.tar.xz
```

可以在备份的/home/root/sysroot 下找到不用下载

## 3、修改配置文件 

/etc/profile ，在最后增加下面环境变量，前面两条是.net5的环境变量，第三四两个是.net5的两个配置开关，需要打开否则会报错
[最后一个是增加新的动态链接库，指向我们下载的位置]
不应该将所有的库加入到连接路径，目前的操作是将libstdc++.so.6.0.22拷贝到/usr/lib/下

```
export DOTNET_ROOT=$HOME/dotnet5
export PATH=$PATH:$HOME/dotnet5
export DOTNET_SYSTEM_GLOBALIZATION_INVARIANT=true
export DOTNET_CLI_TELEMETRY_OPTOUT=true
#export LD_LIBRARY_PATH=/home/root/sysroot/sysroot-glibc-linaro-2.23-2017.05-aarch64-linux-gnu/lib
```

#先删除原有的，再改成新的

```
ln -s libstdc++.so.6.0.22 libstdc++.so.6

root@ls1012a-ek200:/usr/lib# ls -l |grep libstdc++ 
lrwxrwxrwx 1 root root        19 May  4 00:37 libstdc++.so.6 -> libstdc++.so.6.0.22
-rwxr-xr-x 1 1000 pulse  1061528 Dec 21  2018 libstdc++.so.6.0.20
-rwxr-xr-x 1 root root  11928128 May  4 00:35 libstdc++.so.6.0.22
root@ls1012a-ek200:/usr/lib# 
```



## 4、安装hsl

将群里面的压缩包解压后放到开发板的/home/root下面

```
chmod +x HslTechnology.EdgeServer

./HslTechnology.EdgeServer

root@ls1012a-ek200:~/linux-arm64# ./HslTechnology.EdgeServer
[Info] 2020-05-04 00:53:51.002 Thread [001]  
[Info] 2020-05-04 00:53:51.043 Thread [001]       ___            ___            ___  
[Info] 2020-05-04 00:53:51.043 Thread [001]      /\__\          /\  \          /\__\ 
[Info] 2020-05-04 00:53:51.043 Thread [001]     /:/  /         /::\  \        /:/  / 
[Info] 2020-05-04 00:53:51.043 Thread [001]    /:/__/         /:/\ \  \      /:/  /  
[Info] 2020-05-04 00:53:51.043 Thread [001]   /::\  \ ___    _\:\~\ \  \    /:/  /   
[Info] 2020-05-04 00:53:51.043 Thread [001]  /:/\:\  /\__\  /\ \:\ \ \__\  /:/__/    
[Info] 2020-05-04 00:53:51.043 Thread [001]  \/__\:\/:/  /  \:\ \:\ \/__/  \:\  \    
[Info] 2020-05-04 00:53:51.043 Thread [001]       \::/  /    \:\ \:\__\     \:\  \   
[Info] 2020-05-04 00:53:51.043 Thread [001]       /:/  /      \:\/:/  /      \:\  \  
[Info] 2020-05-04 00:53:51.043 Thread [001]      /:/  /        \::/  /        \:\__\ 
[Info] 2020-05-04 00:53:51.044 Thread [001]      \/__/          \/__/          \/__/  by 杭州胡工物联科技有限公司
[Info] 2020-05-04 00:53:51.044 Thread [001]  
[Info] 2020-05-04 00:53:51.044 Thread [001] 欢迎试用24*7小时，如需采购软件，请联系QQ：200962190  Email:hsl200909163.com   微信：13516702732
[Info] 2020-05-04 00:53:51.044 Thread [001] 正在加载配置文件。
[Info] 2020-05-04 00:53:51.247 Thread [001] 当前设备配置文件路径：/home/root/linux-arm64/devices.xml
[Info] 2020-05-04 00:53:53.225 Thread [001] 运行的目录位置：/home/root/linux-arm64/
[Info] 2020-05-04 00:53:53.230 Thread [001] 运行的系统信息：Unix 4.4.98.1
[Info] 2020-05-04 00:53:53.246 Thread [001] 运行的CLR信息：5.0.12
[Info] 2020-05-04 00:53:53.247 Thread [001] 运行的计算机信息：ls1012a-ek200
[Info] 2020-05-04 00:53:53.256 Thread [001] 运行的程序版本号：1.0.4
[Error] 2020-05-04 00:53:54.286 Thread [001] HslTechnology.Edge Authorization Failed
[Info] 2020-05-04 00:53:54.709 Thread [001] MqttServer[521] : Start engine
[Debug] 2020-05-04 00:53:54.851 Thread [001] HttpServer[522] : Server Started, wait for connections
[Info] 2020-05-04 00:53:54.875 Thread [001] EdgeServices : Web服务器加载成功！
[Info] 2020-05-04 00:53:54.901 Thread [001] EdgeServices : 远程更新服务器加载成功！
[Info] 2020-05-04 00:53:54.940 Thread [001] Server Start!
[Info] 2020-05-04 00:53:56.984 Thread [008] 上传服务器的线程启动！
```



## 备份root文件

### 1. scp从linux服务器反向scp拷贝文件到我的虚拟机

```
备份 dotne5
scp -r root@192.168.0.115:/home/root/dotnet5 /root/gw200_file
```

![image-20211129121138337](5G网关运行环境搭建-正常运行.assets/image-20211129121138337.png)

```
备份 sysroot-glibc-linaro-2.23-2017.05-aarch64-linux-gnu.tar.xz
scp -r root@192.168.0.115:/home/root/sysroot/sysroot-glibc-linaro-2.23-2017.05-aarch64-linux-gnu.tar.xz /root/gw200_file
```

![image-20211129122600349](5G网关运行环境搭建-正常运行.assets/image-20211129122600349.png)

```
备份 linux-arm64
scp -r root@192.168.0.115:/home/root/linux-arm64 /root/gw200_file
```



## 5、搭建交叉编译环境

### 5.1 配置交叉编译环境

说明：交叉编译工具可使用 fsl-qoriq 或 gcc-linaro 交叉编译工具。

#### 5.1.1 安装 fsl-qoriq 交叉编译工具

1）打开到在在网盘下载的 3.开发工具/fsl-qoriq-4.9。
2）把 fsl-qoriq-glibc-x86_64-aarch64-toolchain-2.0.part1.rar 解压到当前文件夹。
3）把解压得到的 fsl-qoriq-glibc-x86_64-aarch64-toolchain-2.0.sh 文件复制到 Ubuntu Host 上。
4）执行下面的命令以开始安装交叉编译工具

```
=====> 输入指令：
./fsl-qoriq-glibc-x86_64-aarch64-toolchain-2.0.sh
```

5）选择安装路径，这里直接按 Enter 键，并在安装确认提示时还是直接按 Enter 键以继续安装。

![1638172840335](5G网关运行环境搭建-正常运行.assets/1638172840335.png)6）执行环境变量配置脚本并配置环境变量

```
=====> 输入指令：
./opt/fsl-qoriq/2.0/environment-setup-aarch64-fsl-linux
	注：若无法执行，先将文件转成可执行文件，再执行：chmod +x environment-setup-aarch64-fsl-linux
unset LDFLAGS
```

7）检查配置

```
=====> 输入指令：
echo $LDFLAGS
$CC -v
```

![1638172949350](5G网关运行环境搭建-正常运行.assets/1638172949350.png)

#### 5.1.2 安装 gcc-linaro 交叉编译工具

若无fsl-qoriq包可用方法2

1）创建安装目录

```
=====> 输入指令：
sudo mkdir /opt/gcc-linaro -p
sudo chmod 777 /opt/gcc-linaro
cd /opt/gcc-linaro
```

2）下载交叉编译工具

```
=====> 输入指令：
wget https://releases.linaro.org/components/toolchain/binaries/latest-4/aarch64-linux-gnu/gcc-linaro-4.9.4-2017.01-x86_64_aarch64-linux-gnu.tar.xz
```

3）解压交叉编译工具

```
====> 输入指令：
tar xvf gcc-linaro-4.9.4-2017.01-x86_64_aarch64-linux-gnu.tar.xz -C /opt/gcc-linaro
```

4）创建交叉编译工具配置脚本=====> 输入指令：

```
cat << EOF > /opt/gcc-linaro/gcc-linaro-4.9.4-2017.01-x86_64_aarch64-linux-gnu.env

!/bin/sh

export PATH=/opt/gcc-linaro/gcc-linaro-4.9.4-2017.01-x86_64_aarch64-linux-gnu/bin:${PATH}
export ARCH=arm64
export CROSS_COMPILE=aarch64-linux-gnu-EOF
```

5） 配置交叉编译环境变量

```
=====> 输入指令：

chmod +x /opt/gcc-linaro/gcc-linaro-4.9.4-2017.01-x86_64_aarch64-linuxgnu.env
```

6）检查安装

```
=====> 输入指令：
${CROSS_COMPILE}gcc -v
```

### 5.2测试交叉编译环境

将测试例程clone到指定文件夹

```
=====> 输入指令：

git clone http://git.linkortech.com:10020/NO.14/HelloWorld
```

测试在本虚拟机下跑通例程

```
=====> 输入指令：

source  source env_linux.sh

./build_project.sh 
```

例程可执行

![1638175089298](5G网关运行环境搭建-正常运行.assets/1638175089298.png)

source 交叉编译环境

```
=====> 输入指令：

source arm_env_linux.sh 

./build_project.sh 
```

生成可执行文件helloworld，执行该文件，提示无法执行

![1638175226411](5G网关运行环境搭建-正常运行.assets/1638175226411.png)

原因是所生成的是在aarch64架构下的可执行文件

![1638175331016](5G网关运行环境搭建-正常运行.assets/1638175331016.png)

将该可执行文件scp传输到网关中（新建zjftest文件夹）

```
=====> 输入指令：

scp hellowordl@192.168.0.115:/root/zjftest
```

在网关终端执行hellowordl可执行文件

![1638175628036](5G网关运行环境搭建-正常运行.assets/1638175628036.png)