> 文档中心 > 全志XR806编译中的几个问题以及hello跑起来

全志XR806编译中的几个问题以及hello跑起来

首先我们先看https://xr806.docs.aw-ol.com/
该文档部分不适应 当前最新gitee

如果没有repo工具,可通过下面的git命令获取repo。

git clone https://gerrit-googlesource.lug.ustc.edu.cn/git-repo

下载代码 没有使用ssh://方式 过于麻烦

mkdir xr806_openharmonycd xr806_openharmonyrepo init -u https://gitee.com/openharmony-sig/manifest.git -b OpenHarmony_1.0.1_release --no-repo-verify -m devboard_xr806.xmlrepo sync -crepo forall -c 'git lfs pull'   #下载部分大容量二进制文件

编译流程

cd device/xradio/xr806/xr_skylark   #(1)进入原生SDK目录cp project/demo/audio_demo/gcc/deconfig .config   #(2)复制配置文件make menuconfig#(3)图形化界面配置make build_clean      #(4)清除旧配置make lib -j    #(5)根据配置生成静态库和全局头文件cd -    #(6)返回Harmony根目录hb set  #(7)选择wifi_skylarkhb build -f    #(8)编译,后续不需要重新配置

编译中遇到的问题
1.缺少SDKconfig.gni
直接导致 hb build -f 报错编译失败
解决方法
修改xr806_openharmony/device/xradio/xr806/xr_skylark/config.py
该文件的换行符 unix格式

#!/usr/bin/python3import ospwd = os.path.dirname (__file__)f = open('{0}/.config'.format(pwd),'r')DATA = ['#XR806 config']for line in f.readlines():    if line[0] != '#' and line[0] != '\n': line = line.strip('\n') DATA.append(line)GNf = open('{0}/../liteos_m/SDKconfig.gni'.format(pwd),'w')GNf.write('#Build by config.py DO NOT EDIT!\n\n')GNf.write('SDK_cflags = [\n\    "-mcpu=cortex-m33",\n\    "-mtune=cortex-m33",\n\    "-march=armv8-m.main+dsp",\n\    "-mfpu=fpv5-sp-d16",\n\    "-mfloat-abi=softfp",\n\    "-mcmse",\n\    "-mthumb",\n\    "-c",\n\    "-g",\n\    "-fno-common",\n\    "-fmessage-length=0",\n\    "-fno-exceptions",\n\    "-ffunction-sections",\n\    "-fdata-sections",\n\    "-fomit-frame-pointer",\n\    "-Wall",\n\    #"-Werror",\n\    "-Wno-cpp",\n\    "-Wpointer-arith",\n\    "-Wno-error=unused-function",\n\    "-MMD",\n\    "-MP",\n\    "-Os",\n\    "-DNDEBUG",\n\    "-Wno-error=stringop-truncation",\n\    "-Wno-error=restrict",\n\    "-includexr_config.h",\n\    "-includecommon/prj_conf_opt.h",\n\    "-DCONFIG_CHIP_ARCH_VER=3",\n\    "-DCONFIG_ARCH_APP_CORE",\n\    "-DCONFIG_CPU_CM33F",\n\]\n\n')PROJECT = [x for i,x in enumerate(DATA) if x.find('CONFIG_PROJECT=') != -1]if len(PROJECT) == 1:    ProjectPath = PROJECT[0]    ProjectPath = ProjectPath.strip('CONFIG_PROJECT=')GNf.write('ProjectPath = {0}\n\n'.format(ProjectPath))if ProjectPath == '"bootloader"' or ProjectPath == '"test/etf"':    GNf.write('declare_args() {IsBootloader = "true"}\n')else:    GNf.write('declare_args() {IsBootloader = "false"}\n')#print (DATA)

2.hello 一直不出现
修改xr806_openharmony/device/xradio/xr806/libcopy.py
该文件的换行符 是windows格式(很奇怪对吧)。

#!/usr/bin/python3import osimport jsonpwd = os.path.dirname (__file__)XTS_TEST = "disable"def filenames_filter(filename_list,Features_str,extention_name):    confirm_list = []    for filename in filename_list: if filename.find(Features_str) != -1:     if extention_name == os.path.splitext(filename)[1]:  confirm_list.append(filename)    return confirm_list# whether config.json define compoent "test"?vendorf = open('{0}/../../../vendor/xradio/xr806/config.json'.format(pwd),'r')configData = json.load(vendorf)subsystemsData = configData['subsystems']for JSON_TXET in subsystemsData:    ComponentJson = json.dumps(JSON_TXET) componentPython = json.loads(ComponentJson)    if componentPython["subsystem"] == "test": XTS_TEST = "enable"GNf = open('{0}/xr_skylark/ohos.mk'.format(pwd),'w')FnList = os.listdir('{0}/xr_skylark/lib/ohos'.format(pwd))APPlib = filenames_filter(FnList,'libapp_','.a')if XTS_TEST == "enable":    TESTlib = filenames_filter(FnList,'libmodule_','.a')    # if test XTS_UPgrade,KEYlib should add 'libhota.a'    KEYlib = ['libwifiservice.a','libhiview_lite.a','libhilog_lite.a',\    'libhievent_lite.a','libbootstrap.a','libhctest.a','libbroadcast.a']else:    TESTlib = []    KEYlib = []RTOSlib = list(set(FnList) - set(APPlib) - set(TESTlib) - set(KEYlib))GNf.write('#\n# Rules for ohos library\n#\n\n')GNf.write('OHOSSOURCE = -Wl,--whole-archive\n')for lib in KEYlib:    GNf.write('OHOSSOURCE += $(ROOT_PATH)/lib/ohos/{0}\n'.format(lib)) for lib in APPlib:    GNf.write('OHOSSOURCE += $(ROOT_PATH)/lib/ohos/{0}\n'.format(lib))for lib in TESTlib:    GNf.write('OHOSSOURCE += $(ROOT_PATH)/lib/ohos/{0}\n'.format(lib))GNf.write('OHOSSOURCE += -Wl,--no-whole-archive\n')GNf.write('\n')GNf.write('OHOSSOURCE += -Wl,--start-group\n')for lib in RTOSlib:    GNf.write('OHOSSOURCE += $(ROOT_PATH)/lib/ohos/{0}\n'.format(lib))GNf.write('OHOSSOURCE += -Wl,--end-group\n')GNf.write('#\n# end of file\n#\n\n')
  1. win下make menuconfig问题 建议用linux(能烧录哦)
目前我用了Cygwinmsys2 以及msys2中带的msys都是同类型错误,建议看看其他坛友是否有方法MinGW 未试

问题2分析

文件xr806_openharmony/device/xradio/xr806/xr_skylark/ohos.mk默认有OHOSSOURCE = -Wl,--whole-archiveOHOSSOURCE += $(ROOT_PATH)/lib/ohos/libapp_console.aOHOSSOURCE += -Wl,--no-whole-archive所以编译后能跑起来libcopy.py 未能正确运行导致文件未被更新如:OHOSSOURCE = -Wl,--whole-archiveOHOSSOURCE += $(ROOT_PATH)/lib/ohos/libapp_console.aOHOSSOURCE += $(ROOT_PATH)/lib/ohos/libapp_led.aOHOSSOURCE += $(ROOT_PATH)/lib/ohos/libapp_WlanTest.aOHOSSOURCE += -Wl,--no-whole-archive所以 不管你怎么改都只是 支持libapp_console 设置可手工添加(不建议。

hello 跑起来怎么改?
https://xr806.docs.aw-ol.com/study/soft_helloword/
给的文档已经过期不适合 现在最新的gitee代码

修改xr806_openharmony/device/xradio/xr806/ohosdemo/BUILD.gn内容:group("ohosdemo") {    deps = [ "hello_demo:app_hello", "LED:app_led", #"iot_peripheral:app_peripheral", #"wlan_demo:app_WlanTest",    ]}

如此这般hello_demo 就能愉快的跑起来了。

原贴链接:https://bbs.aw-ol.com/topic/790/
全志在线开发者交流企鹅群(客服机器人24小时在线解答):498263967
资源获取、问题讨论可以到全志在线开发者社区进行:https://www.aw-ol.com/
全志及开发者最新动态可以关注全志在线微信公众号

VR资源云