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

阅读量0
1
1


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

要查看对应的服务是否已启动,可以使用$ sudo service --status-all命令
  1. $ sudo service --status-all
  2. [ + ]  smartmontools
  3. [ + ]  smbd
  4. [ + ]  ssh
  5. [ - ]  sudo
复制代码
可以看到,需要的服务以及开启。
但是对于samba服务,则还需要手动配置下方可使用。需要配置如下两步:
  • 配置共享目录

执行以下命令修改samba配置信息
  1. $sudo vim /etc/samba/smb.conf
复制代码
在最后加上待共享的用户及文件目录配置,如下所示,其中path为你待共享的目录地址
  1. [davin]
  2.         comment = davin guest share
  3.         path = /home/davin
  4.         public = yes
  5.         writable = yes
  6.         directory mask = 0775       # rwxrwxr_x
  7.         create mask = 0775          # rwxrwxr_x
  8.         valid users = davin,root
  9.         write list = davin,root
  10.         browseable = yes
  11.         available = yes
复制代码
修改完成之后点击"Esc"键,在输入":wq"后点击回车退出编辑。
  • 添加smba用户
注意该用户必须是deepin20下的已存在用户,但是samba的密码是单独设置的,与系统用户秘密无关。
  1. $ sudo smbpasswd -a davin
  2. New SMB password:
  3. Retype new SMB password:
  4. Added user davin.
复制代码
以上两步成功之后依次执行如下命令重启服务器即可
  1. $ sudo service smbd reload
  2. $ 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.)
  1. $ sudo pip3 install --upgrade pip
  2. WARNING: pip is configured with locations that require TLS/SSL, however the ssl module in Python is not available.
  3. 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/                                                                                            
  4. 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/                                                                                            
  5. 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/                                                                                            
  6. 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/                                                                                            
  7. 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)。
  1. $ sudo apt-get install libssl-dev
复制代码
安装成功之后,再配置python,将输出如下提仕,表示libssl库配置成功
  1. checking for pkg-config... /usr/bin/pkg-config
  2. checking whether compiling and linking against OpenSSL works... yes
  3. checking for X509_VERIFY_PARAM_set1_host in libssl... yes
  4. 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)
  1. Hi3861/code-1.0$ python  build.py wifiiot
  2. ...
  3. [196/197] ACTION //vendor/hisi/hi3861/hi3861:run_wifiiot_scons(//build/lite/toolchain:linux_x86_64_riscv32_gcc)
  4. FAILED: obj/vendor/hisi/hi3861/hi3861/run_wifiiot_scons_build_ext_components.txt
  5. python ../../build/lite/build_ext_components.py --path=../../vendor/hisi/hi3861/hi3861 --command=sh hm_build.sh
  6. Python 3.7 or greater required, but you have Python 2.7.16
  7. Traceback (most recent call last):
  8.   File "../../build/lite/build_ext_components.py", line 64, in <module>
  9.     sys.exit(main())
  10.   File "../../build/lite/build_ext_components.py", line 58, in main
  11.     cmd_exec(args.command)
  12.   File "../../build/lite/build_ext_components.py", line 32, in cmd_exec
  13.     raise Exception("{} failed, return code is {}".format(cmd, ret_code))
  14. Exception: ['sh', 'hm_build.sh'] failed, return code is 2
  15. ninja: build stopped: subcommand failed.
  16. you can check build log in /home/davin/workplace/openharmony/Hi3861/code-1.0/out/wifiiot/build.log
  17. /home/davin/ninja/ninja -w dupbuild=warn -C /home/davin/workplace/openharmony/Hi3861/code-1.0/out/wifiiot failed, return code is 1
  18. usage:
  19.   python build.py ipcamera_hi3516dv300
  20.   python build.py ipcamera_hi3518ev300
  21.   python build.py wifiiot

  22. positional arguments:
  23.   product               Name of the product

  24. optional arguments:
  25.   -h, --help            show this help message and exit
  26.   -b BUILD_TYPE, --build_type BUILD_TYPE
  27.                         release or debug version.
  28.   -t [TEST [TEST ...]], --test [TEST [TEST ...]]
  29.                         Compile test suit
  30.   -n, --ndk             Compile ndk
  31. Hi3861/code-1.0$
复制代码
直接提示是python版本问题,但实际上我的python也是3.7.3版本,并不是2.7版本。尝试各种办法,包括重建编译构建环境均无法解决此问题。
最后重读按照官方文档,才发现“推荐SCons版本是3.0.4+”,deepin20软件源中以包含推荐SCons版本是3.0.1,低于推荐版本,于是手动升级到最新版本4.0.1版,升级成功后查看版本以确认
  1. $ scons -v
  2. SCons by Steven Knight et al.:
  3.         SCons: v4.0.1.c289977f8b34786ab6c334311e232886da7e8df1, 2020-07-17 01:50:03, by bdbaddog on ProDog2020
  4.         SCons path: ['/usr/local/lib/python3.8/site-packages/SCons-4.0.1-py3.8.egg/SCons']
  5. Copyright (c) 2001 - 2020 The SCons Foundation
复制代码

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

回帖

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容图片侵权或者其他问题,请联系本站作侵删。 侵权投诉
链接复制成功,分享给好友