电子产业一站式赋能平台

PCB联盟网

搜索
查看: 1922|回复: 0
收起左侧

鸿蒙开发之环境准备【1】-基于Deepin20操作系统的编译服务器环境搭建遇到的问题及解决方式

[复制链接]

2607

主题

2607

帖子

7472

积分

高级会员

Rank: 5Rank: 5

积分
7472
发表于 2020-10-21 09:56:50 | 显示全部楼层 |阅读模式
鸿蒙开发之环境准备【1】-基于Deepin20操作系统的编译服务器环境搭建遇到的问题及解决方式,   
概述        根据官方文档描述,鸿蒙系统的开发环境搭建比较复杂,无法直接在单纯的win或linux系统PC上完成。代码烧录必须在win系统下运行(mac环境后继将会支持,但是linux系统的环境尚没有支持的消息)。 win环境搭建较为简单,根据参考文档安装相应软件即可; linux环境搭建较为复杂,包含一系统的编译构建工具及交叉编译环境,本文介绍Linux环境搭建。 参考官方提供的文档:搭建环境
为什么使用Deepin20系统 <span]        在鸿蒙出来之前,就已经用上了deepin系统,当时最新的版本是15.11,使用起来有点win的风格。除了打印机无法使用,以及其他小问题外,体验还算是比较可以了。最为主要的是,没有广告弹框弹出,WPS也是回归到了办公软件的本质。 鸿蒙出世后,时常关注信息,当润和软件开始发售基于鸿蒙OS的开发套件后,第一时间在淘宝上购买了IoT主板,本来计划先玩熟悉之后,再慢慢购买周边,没有想到能在电子发烧友上申请到全套使用套装,欣喜之余,更坚定了学习接纳鸿蒙OS的决心。 <span] 于是趁完整套件还未收到手之前,先行搭建好环境。       在初次尝试环境搭建时,15.11版本出现诸多的不适应,例如软件源中很多常用tools都没有,需要手工安装,最后仍卡在python安装中;后面发现最新版本的deepin20已经正式发布,尝试使用最新版本后,其软件源非常丰富,使用起来更得心应手,而且还解决了之前无法使用打印机的问题,同时搭建鸿蒙编译构建环境也较为顺利。
如何设置开发烧录环境(win10)与编译环境(deepin20)的连接及共享 根据官方文档共享用到的samba服务,连接用到了ssh服务。 令人省心的是,deepin20已经预装次两项服务,其中ssh服务的支持可以直接用现有的帐号在win ssh终端登陆到deepin20主机;

要查看对应的服务是否已启动,可以使用$ sudo service --status-all命令

  • $ sudo service --status-all
      
  • [ + ]  smartmontools
      
  • [ + ]  smbd
      
  • [ + ]  ssh
      
  • [ - ]  sudo

复制代码 可以看到,需要的服务以及开启。 但是对于samba服务,则还需要手动配置下方可使用。需要配置如下两步:

  • 配置共享目录
      


执行以下命令修改samba配置信息



  • $sudo vim /etc/samba/smb.conf

复制代码 在最后加上待共享的用户及文件目录配置,如下所示,其中path为你待共享的目录地址

  • [davin]
      
  •         comment = davin guest share
      
  •         path = /home/davin
      
  •         public = yes
      
  •         writable = yes
      
  •         directory mask = 0775       # rwxrwxr_x
      
  •         create mask = 0775          # rwxrwxr_x
      
  •         valid users = davin,root
      
  •         write list = davin,root
      
  •         browseable = yes
      
  •         available = yes

复制代码 修改完成之后点击“Esc“键,在输入“:wq“后点击回车退出编辑。



  • 添加smba用户
      
注意该用户必须是deepin20下的已存在用户,但是samba的密码是单独设置的,与系统用户秘密无关。

  • $ sudo smbpasswd -a davin
      
  • New SMB password:
      
  • Retype new SMB password:
      
  • Added user davin.

复制代码 以上两步成功之后依次执行如下命令重启服务器即可

  • $ sudo service smbd reload
      
  • $ sudo service smbd restart

复制代码
解决安装Python包管理工具(pip3)报SSL错误 在根据鸿蒙系统环境搭建步骤执行到安装Python包管理工具(pip3)时,始终报错,提示ssl访问问题(pip is configured with locations that require TLS/SSL, however the ssl module in Python is not available.)

  • $ sudo pip3 install --upgrade pip
      
  • WARNING: pip is configured with locations that require TLS/SSL, however the ssl module in Python is not available.
      
  • WARNING: Retrying (Retry(total=4, connect=None, read=None, redirect=None, status=None)) after connection broken by \“SSLError(“Can\“t connect to HTTPS URL because the SSL module is not available.“)\“: /simple/pip/                                                                                            
      
  • WARNING: Retrying (Retry(total=3, connect=None, read=None, redirect=None, status=None)) after connection broken by \“SSLError(“Can\“t connect to HTTPS URL because the SSL module is not available.“)\“: /simple/pip/                                                                                            
      
  • WARNING: Retrying (Retry(total=2, connect=None, read=None, redirect=None, status=None)) after connection broken by \“SSLError(“Can\“t connect to HTTPS URL because the SSL module is not available.“)\“: /simple/pip/                                                                                            
      
  • WARNING: Retrying (Retry(total=1, connect=None, read=None, redirect=None, status=None)) after connection broken by \“SSLError(“Can\“t connect to HTTPS URL because the SSL module is not available.“)\“: /simple/pip/                                                                                            
      
  • WARNING: Retrying (Retry(total=0, connect=None, read=None, redirect=None, status=None)) after connection broken by \“SSLError(“Can\“t connect to HTTPS URL because the SSL module is not available.“)\“: /simple/pip/      

复制代码 经排查发现预装的openssl环境不包含libssl-dev,导致配置编译python3.8.5时出现openssl无法配置成功而未使用到ssl库,导致后继错误。值得表扬的是,deepin20的软件源中已经包含了ssl-dev库,只是没有预装到系统,所以直接命令行安装即可(最初在deepin15.11版本为解决此问题,自行下载了openssl源码并编译出目标库,替换系统的openssl库,再重新编译python 3.8.5)。

  • $ sudo apt-get install libssl-dev

复制代码 安装成功之后,再配置python,将输出如下提仕,表示libssl库配置成功

  • checking for pkg-config... /usr/bin/pkg-config
      
  • checking whether compiling and linking against OpenSSL works... yes
      
  • checking for X509_VERIFY_PARAM_set1_host in libssl... yes
      
  • checking for --with-ssl-default-suites... python

复制代码
PS: Deepin20系统已预装python 3.7.3,经验证,该版本也是可以完成鸿蒙OS工程的构建与编译的。所以此次安装python3.8.5也就不是必须的步骤了。 再deepin20系统中python环境及其相关工具安装均可以用命令行完成,不需要再手动下载安装相关的.whl文件,不错不错!!!
解决deepin20系统命令行安装的SCons版本过低的问题 编译Hi3861开发板第一个示例程序时遇到如下错误(Python 3.7 or greater required, but you have Python 2.7.16)

  • Hi3861/code-1.0$ python  build.py wifiiot
      
  • ...
      
  • [196/197] ACTION //vendor/hisi/hi3861/hi3861:run_wifiiot_scons(//build/lite/toolchain:linux_x86_64_riscv32_gcc)
      
  • FAILED: obj/vendor/hisi/hi3861/hi3861/run_wifiiot_scons_build_ext_components.txt
      
  • python ../../build/lite/build_ext_components.py --path=../../vendor/hisi/hi3861/hi3861 --command=sh\ hm_build.sh
      
  • Python 3.7 or greater required, but you have Python 2.7.16
      
  • Traceback (most recent call last):
      
  •   File “../../build/lite/build_ext_components.py“, line 64, in <module>
      
  •     sys.exit(main())
      
  •   File “../../build/lite/build_ext_components.py“, line 58, in main
      
  •     cmd_exec(args.command)
      
  •   File “../../build/lite/build_ext_components.py“, line 32, in cmd_exec
      
  •     raise Exception(“{} failed, return code is {}“.format(cmd, ret_code))
      
  • Exception: [\“sh\“, \“hm_build.sh\“] failed, return code is 2
      
  • ninja: build stopped: subcommand failed.
      
  • you can check build log in /home/davin/workplace/openharmony/Hi3861/code-1.0/out/wifiiot/build.log
      
  • /home/davin/ninja/ninja -w dupbuild=warn -C /home/davin/workplace/openharmony/Hi3861/code-1.0/out/wifiiot failed, return code is 1
      
  • usage:
      
  •   python build.py ipcamera_hi3516dv300
      
  •   python build.py ipcamera_hi3518ev300
      
  •   python build.py wifiiot
      

  •   
  • positional arguments:
      
  •   product               Name of the product
      

  •   
  • optional arguments:
      
  •   -h, --help            show this help message and exit
      
  •   -b BUILD_TYPE, --build_type BUILD_TYPE
      
  •                         release or debug version.
      
  •   -t [TEST [TEST ...]], --test [TEST [TEST ...]]
      
  •                         Compile test suit
      
  •   -n, --ndk             Compile ndk
      
  • Hi3861/code-1.0$  

复制代码 直接提示是python版本问题,但实际上我的python也是3.7.3版本,并不是2.7版本。尝试各种办法,包括重建编译构建环境均无法解决此问题。 最后重读按照官方文档,才发现“推荐SCons版本是3.0.4+”,deepin20软件源中以包含推荐SCons版本是3.0.1,低于推荐版本,于是手动升级到最新版本4.0.1版,升级成功后查看版本以确认

  • $ scons -v
      
  • SCons by Steven Knight et al.:
      
  •         SCons: v4.0.1.c289977f8b34786ab6c334311e232886da7e8df1, 2020-07-17 01:50:03, by bdbaddog on ProDog2020
      
  •         SCons path: [\“/usr/local/lib/python3.8/site-packages/SCons-4.0.1-py3.8.egg/SCons\“]
      
  • Copyright (c) 2001 - 2020 The SCons Foundation

复制代码

再次编译示例程序,编译成功!!! 编译环境搭建成功,后继再更新烧录及运行遇到的一些问题及解决方式。
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则


联系客服 关注微信 下载APP 返回顶部 返回列表