部署和运行 App
将 APP(本例为 app_demo )下载到目标设备,SylixOS 推荐使用标准的应用程序目录结构,即每个应用在 /apps 目录创建自己的子目录,如本例创建 /apps/app_demo 目录。
将上一步编译生成的可执行文件下载到其中,可使用 RealEvo-IDE 的一键部署功能实现程序下载。
右键 app_demo 工程,选择菜单 Properties 打开工程属性页,选择 SylixOS Project > Device Setting 选项卡,可查看和更改部署配置。
在创建 SylixOS App 工程时,RealEvo-IDE 默认会添加工程当前配置输出文件夹下与工程名同名的文件到文件列表。
如下图所示,可以选择 Workspace 中已添加的任一存在的设备部署文件。
单击 Add 按钮添加新的部署文件路径。
设置完成后,右键工程,选择菜单 SylixOS > Upload 部署工程。同时 RealEvo-IDE 支持对单个文件的部署,可以在编译的结果文件夹下选择需要部署的文件进行部署,这里需要注意的是,被部署的单个文件必须在 Upload Setting 已经做好了配置。
说明:
如果部署不成功需要检查防火墙是否处于关闭状态。登录 SylixOS 系统,切换到 /apps/app_demo 目录,运行 ./app_demo 可执行程序,如下图所示。
RealEvo-IDE 支持远程 Shell,进入 Device 页面,在目标设备上右击,单击 Launch Terminal 可以打开设备终端,在打开的终端上输入命令运行即可,如下图所示。
运行应用程序时有可能出现以下问题:如下图所示,在程序内引用了外部函数,而且没有配置相关路径,编译时没有警告也没有报错,部署后运行却提示 [ld]Library can
not find symbol:
。
对于这样的问题,开发环境提供了一项辅助分析的功能。工程编译后在 Debug 目录或 Release 目录下生成可执行文件,在该文件上单击右键,使用 ELF File Analysis 菜单可以分析出该 elf 文件所用到的所有符号,在编译时找不到的符号均以红色标出,如下图所示。
针对只使用静态库,不使用共享库的业务场景,如果 libsylixos/Output
目录下的 libvpmpdm.so
文件被删除,SylixOS App 程序将自动连接 libvpmpdm.a
文件,这种情况将导致 SylixOS App 运行时出现“vprocRun() error: can not find entry function.”的错误提示。
因此,在必须使用静态库 libvpmpdm.a
的业务场景,必须修改 SylixOS App 对应的 app_demo.mk
文件的 LOCAL_LINKFLAGS 加入参数“-Wl,--whole-archive -lvpmpdm -Wl,--no-whole-archive”。
配置示例如下:
选择 SylixOS App 工程单击鼠标右键,选择 Properties 弹出如下图所示对话框。