制并配置依赖库到目标系统即可。
环境变量配置
Binaries are built and put in the bin folder from where you ran the build script. You can add a reference to LD_LIBRARY_PATH to the library:
$ export LD_LIBRARY_PATH=`pwd`/bin/usr/local/lib:$LD_LIBRARY_PATH
执行上述命令,配置类库目标到环境变量(上述命令为临时环境变量配置,仅当前shell有效)
配置全局环境变量的方法:
vi /etc/profile
在文件的最后一行,增加环境变量LD_LIBRARY_PATH的配置
保存退出后,执行source /etc/profile 刷新环境变量
注:vi相关操作,请自行百度或必应。
Linux串口测试
将测试验证程序中的SerialPort类更换为SerialPortStream类库(方法、属性基本兼容),进行适当的调整,在windows系统上编译运行,通过。
重新发布Linux系统运行版本,进行linux系统部署。
采用普通用户pi登录
如环境变量未有效配置,串口类无法正常执行,程序执行到串口方法调用处停止。
按Ctrl+C终止程序。
配置好串口类库所需环境变量,重新运行程序,程序正常运行。
如下图,程序启动,列举出系统有效串口,如下图所示:
由于pi用户帐户权限原因,程序只显示了/dev/ttySAC0一个串口,此串口为系统调试终端输出串口。
切换到系统超级用户
su root
根据提示输入密码:fa
切换到程序目录,执行测试程序 ./publish/HelloArm,出现如下界面:
在超级用户下,程序列举出了5个串口。
通过操作命令,打开指定的串口,开启接收事件及定时周期发送数据,连接电脑串口(目前大部分电脑已不再提供串口,本实验通过USB转串口模块进行连接),通过PC端的串口工具软件同Linux迷你PC主机进行通讯,收发通讯正常。
配置程序开机运行
在root用户下,配置/etc/rc.local文件,将程序添加到系统开机运行
vi /etc/rc.local
在exit 0之前增加一行
/home/pi/publish/HelloArm
保存退出,重启系统
reboot
重启系统后,调试串口终端界面中,可以看到程序运行的输出信息,至此,程序配置完成,开机自动运行成功。
结束语
.net core为微软推出的跨平台托管程序框架,具备在非windows系统部署运行的能力,但在实际应用中,不能过于想当然,以为支持跨平台就万事大吉,以为凡是.net程序就可以顺利移植为.net core跨平台程序,在实际应用中,需要小心求证,以避免掉进计划时间过于理想的大坑(本实验耗费的时间,远超出计划时间呵。串口类库问题耗费了不少时间,对Linux系统相关操作的熟悉,也耗费了较多时间)。
本文中,验证程序是以指定目标平台,无环境依赖方式进行的发布部署,.net core程序也支持以跨平台方式发布部署,但相关目标平台需安装.net core运行时以及相关依赖,微软官方已有详细的说明文档,本文不再赘述。
注:本实验中,使用了两种硬件设备,故截图有所不同,但系统相同,不影响实验效果和结论。