赞
踩
第一个fuchsia上c++程序
在linux主机上 借助于qemu把fuchsia系统跑起来了,接下来就 搞个小程序在上面跑一跑吧
在fuchsia的源码树里已经有一些示例代码了,位于fuchsia/examples/下
最简单的当然是hello_world的, 里面有个 c++版本和rust版本的hello world
还真的只是hello_world
我仿照这个hello_world,写个自己的小程序试试
有两种方法编译应用程序,一是用fuchsia的sdk, 二是直接在源码树里编译应用
可以直接下载一份sdk,但是要考虑到这个系统还在开发中,我们本地的fuchsia源码和下载的sdk不一定是完全匹配的。这时可以选择自己编译一份sdk, 用这个
- fx set core.x64 --args=build_sdk_archives=true
- fx build
参考
https://9to5google.com/2018/12/14/fuchsia-friday-sdk-download/
https://fuchsia.dev/fuchsia-src/development/sdk/download
首先需要将first包含进build,命令如下:
这个错误说明不能随意加一个包方法源码树里,它会检查这个包是否是在visibility list里。那如果我一定要的话,需要把first加入到visibility list里, 修改 build/BUILD.gn文件,格式是 路径+包
继续,这下成功了
启动一个fx serve, 这个东西怎么理解呢, 它类似于 android开发的adb , PC机和android连接靠的是adb工具,adb会在PC机上运行一个server进程和android系统通信。 同理,和fuchsia系统通信就要用这个fx serve。
启动一个shell,执行如下命令:
fx serve
这时候 阻塞在 discovery这里, 表示在等待fuchsia设备
启动fuchsia, 在开一个shell窗口,执行如下命令
fx qemu -N
这里的 -N表示启动网络, 必须要有的,不然无法fuchsia系统不会和 serve连接。
系统启动完毕后,就会发现 serve那个窗口是这样的,表示serve和qemui的fuchsia建立连接了。
这时, 再开一个shell,窗口执行fx shell, 这个就类似android里的adb shell, 能够进入到fuchsia的shell
用locate命令查找下 first在哪里
用run命令执行
fuchsia上有个叫zxdb的工具,用于调试c/c++程序。 参考 zxdb: Fuchsia native debugger
完成过程如图
参考文档来自官方的fuchsia dev fuchsia debug
在fuchsia系统里,打印log的几种模式
stdout
or stderr
, 直接在终端输出显然,我需要使用的是logsink service, 参考官方文档 Syslog
第一步, 要在Component manifest里加上依赖log service。
第二步, 在first的编译配置文件BUILD.gn,加上编译链接依赖(第16行)
第三步,写代码吧, 注意要加的头文件
第四步, 分别是fx build编译和 fx shell run运行
运行结束了, 去哪里看log呢? 查下官网, 用fx log, 默认情况下log tag是manifext文件的名,这里就是first_cpp.cmx了
这个新fuchsia系统很多操作其实和linux,android有类似的地方,使用起来也还算顺手。
比如
赞
踩
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。