修正linux与windows双系统导致时间不一致

原理参考https://blog.csdn.net/gatieme/article/details/51883981

修正方法,新建RealTimeIsUniversal.reg

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\TimeZoneInformation]
"RealTimeIsUniversal"=dword:00000001

合并入windows注册表

Advertisements

fuchsia过了几天之后的重新编译

前两天挂了一块硬盘,本来数据是没丢的,但是为了快速清理空间,我随手把fuchsia删了,于是说重新下载编译。

按照之前的教程,输入fx set x64会出现错误:

⋊> /s/w/p/f/fuchsia on 547e5edc54 ⨯ ./scripts/fx set x64                                                                             23:21:55
ERROR: Unable to parse PRODUCT.BOARD goal "x64"
ERROR: You must specify which product and which board you wish to build.
ERROR: Example:
ERROR:   fx set core.x64
ERROR:
ERROR: Run "fx list-products" to see the available products.
ERROR: Run "fx list-boards" to see the available boards.
ERROR: Run "fx set --help" to see full usage.
⋊> /s/w/p/f/fuchsia on 547e5edc54 ⨯                                                                                                  23:21:58
⋊> /s/w/p/f/fuchsia on 547e5edc54 ⨯ ./scripts/fx set core.x64                                                                        23:22:00
+ /storage/wine/project/fuchsia/fuchsia/zircon/prebuilt/downloads/gn gen /storage/wine/project/fuchsia/fuchsia/out/build-zircon --root=/storage/wine/project/fuchsia/fuchsia/zircon                                                                                                        
Done. Made 12811 targets from 924 files in 5950ms
Done. Made 20355 targets from 1898 files in 90543ms

解决方法也说的很明白,直接换命令。

看一下貌似对于编译有了更为详细的设定

⋊> /s/w/p/f/fuchsia on 547e5edc54 ⨯ ./scripts/fx list-products                                                                                                                                                                                                                      23:26:50
bringup
core
*
router
sdk_image
speaker
terminal
workstation
⋊> /s/w/p/f/fuchsia on 547e5edc54 ⨯ ./scripts/fx list-boards                                                                                                                                                                                                                        23:27:01
arm64
cleo
eagle
*
hikey960
imx8mmevk
kirin970
msm8x53-som
mt8167s_ref
toulouse
vim2
x64

解决Android Studio错误“Gradle’s dependency cache may be corrupt”

由于换了硬盘,所以顺手升级了下Android Studio。不过今天编译的时候,出现了这个错误。

大概意思就是说gradle的缓存挂了,但是在搜索的时候很多网站都说是网络问题,要写个网址上去,其实这个问题的解决办法是把gradle的缓存删除即可(不知为什么ide自己不会删除坏包)

所以linux执行以下命令即可,其他系统类似

rm -rf .gradle/wrapper/dists

在manjaro上安装vivado2018.3

因为原来linux系统硬盘坏了,经历狗东售后之后,一直没安装FPGA的ide,最近要用下,所以开始安装。

直接从官网下载linux安装包,然后安装,会卡在生成设备列表,所以默默去看Arch wiki

简单来说就是,执行以下命令安装一堆东西

yay -Syyu -noconfirm
yay -S gtk2
yay -S libpng12 lib32-libpng12
yay -S fxload 

然后就能正常安装了~~

吐槽一句,说好的自己创建桌面快捷方式呢??目录呢??都没有,还要自己手动加上。。。

顺便后面还有个仿真的大坑等着我

fuchsia df 命令小bug

今天翻了翻fuchsia的代码,翻到df命令的时候发现不愧是google大佬,容量单位都到了EB。但是比较有趣的是他们两段代码貌似不是一个人写的,出现了低级错误:)

EB丢了,8成不是一个人写的…

这几天看了Google的c代码,发现goto命令也没有书(时间太久远了,不记得谁写的,说尽量不goto来着)里面说的那么恐怖,用得好的话代码还是很简洁的。

为fuchsia添加tree命令

节约时间,修改后的tree版本传送门,https://github.com/feilongfl/tree-for-fuchsia

高高兴兴的把tree下载下来发现根本不能用:)

http://mama.indstate.edu/users/ice/tree/ 下载最新(2019.3.4)版本1.8

放在//zircon/system/uapp/tree下,并在uapp下的BUILD.gn添加tree

在tree目录下建立编译文件,忽略各种warrning,然后改掉tree里面各种空括号函数()=>(void)

# Copyright 2019 The Fuchsia Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.

config("tree_config") {
  cflags = [
    "-Wno-discarded-qualifiers",
    "-Wno-implicit-fallthrough",
    "-Wno-sign-compare",
    "-Wno-unused-but-set-parameter",
    "-Wno-incompatible-pointer-types"
  ]
}

executable("tree") {
  configs += [ ":tree_config" ]

  sources = [
    "color.c",
    "hash.c",
    "json.c",
    "tree.c",
    "unix.c",
    "file.c",
    "html.c",
    "strverscmp.c",
    "tree.h",
    "xml.c",
  ]
}

开始编译…….顺利通过

高高兴兴在系统中打开tree命令,顺利的看到崩溃堆栈(手动滑稽),什么鬼…

今天(2019.3.4)太晚了,随手搞搞,先开个坑

开始查坑

首先早上(2019.3.5)起来先写了个helloworld试试水,毕竟这才是正路啊~~

#include <stdio.h>

int main(int argc, const char** argv) {
  printf("Hello world!\n");
  printf("get arg nums [%d]\n",argc);
  for (int i = 0;i < argc;i++) {
    printf("args [%d] => %s\n", argc, argv[i]);
  }
  return 0;
}
# Copyright 2019 The Fuchsia Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.

config("helloworld_config") {
  cflags = [
  ]
}

executable("helloworld") {
  configs += [ ":helloworld_config" ]

  sources = [
    "helloworld.c",
  ]
}

然后编译运行,之后竟然也崩溃了。。。不是吧,c语言我还是很有自信的…

于是开始看别的包,打开i2c的包,发现怎么还有个deps

# Copyright 2019 The Fuchsia Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.

executable("i2c") {
  sources = [
    "i2c.c",
  ]
  deps = [
    "$zx/system/fidl/fuchsia-hardware-i2c:c",
    "$zx/system/ulib/fdio",
    "$zx/system/ulib/zircon",
  ]
}

第一个怎么看都是i2c硬件相关,helloworld用不到,中间那个fdio让人联想到file device i/o,最后那个肯定是系统了,但是helloworld跟系统貌似没什么太大关系,于是说只添加fdio尝试一下,可以运行了

# Copyright 2019 The Fuchsia Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.

config("helloworld_config") {
  cflags = [
  ]
}

executable("helloworld") {
  configs += [ ":helloworld_config" ]

  sources = [
    "helloworld.c",
  ]

  deps = [
    "$zx/system/ulib/fdio",
  ]
}
所以说c语言helloworld我还是能不调试一次写成功的(笑)

这样的话问题就比较清晰了,之前的tree命令没有依赖项。使用输入输出必须添加fdio依赖

google对fdio的说明

FDIO是一个客户端库,它通过紫红色系统接口中的底层fuchsia.io协议提供类似POSIX的抽象。FDIO is a client library that provides a POSIX-like abstraction over the underlying fuchsia.io protocol in the Fuchsia System Interface.

解决tree

添加fdio依赖即可运行(我已经修正github仓库)

# Copyright 2019 The Fuchsia Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.

config("tree_config") {
  cflags = [
    "-Wno-discarded-qualifiers",
    "-Wno-implicit-fallthrough",
    "-Wno-sign-compare",
    "-Wno-unused-but-set-parameter",
    "-Wno-incompatible-pointer-types"
  ]
}

executable("tree") {
  configs += [ ":tree_config" ]

  sources = [
    "color.c",
    "hash.c",
    "json.c",
    "tree.c",
    "unix.c",
    "file.c",
    "html.c",
    "strverscmp.c",
    "tree.h",
    "xml.c",
  ]

  deps = [
    "$zx/system/ulib/fdio",
  ]
}

然后就可以查看fuchsia里面到底是什么目录结构了

想直接查看的朋友移步 https://gist.github.com/feilongfl/1a0d564b85d4de3747af9820abcc82fd

fuchsia编译记录

本文主要参考自 https://fuchsia-china.com/guide-of-fuchsia-os-compilation/zh-cn/

我的开发环境是manjaro,基于archlinux,所以一些命令与ubuntu不同。

关于下载代码的相关说明

1. 由于fuchsia托管在google,所以下载很麻烦。开始使用electron-ssr作为http代理,但是这个软件经常会弹出提示框然后打断网络。因此建议使用cow做socks转http,可以比较稳定下载。

2. 由于使用了python2所以需要对/usr/bin/python的符号链接进行替换,指向python2

3. 由于脚本限制,代理服务器需要写成http://127.0.0.1:7777的形式,不然在python简本中会报错

4. 有时候出现ERROR: Project integration(integration) contains uncommited changes 可以删除那个文件夹然后重新执行jiri update 然后你会发现还报这个错误(我没找到解决方法。。。)

5. 截至目前(2019.3.4)fuchsia源码大小20G

下载后各目录大小

开始编译

编译很快,链接超级慢,不知道为什么连接时候根本没有并发,cpu基本空载,内存貌似没上过8,保险起见建议小于16g内存用户开启swap

编译开始

如果使用固态编译应该会快不少,由于硬盘都存电影了,只能找了个闲置笔记本硬盘还是usb3连接的,速度比较慢,从netdata可以看到明显的io等待,不过没办法,还有种子要下(手动滑稽),估计连接也是卡在io上了,于是电脑慢慢编译,我去睡觉了,明早再看结果把。

emmm,临睡觉前编译完了:)完了今天不能睡觉了

[feilong@feilong-dev fuchsia]$ time ./scripts/fx full-build
ninja: Entering directory `/mnt/fuchsia/fuchsia/out/build-zircon'
[13573/13573] STAMP obj/manifest-x64.stamp
ninja: Entering directory `/mnt/fuchsia/fuchsia/out/x64'
[1/1] Regenerating ninja files
[9326/9326] STAMP obj/build/gn/default.stamp

real    132m37.180s
user    186m42.420s
sys     15m26.925s

编译了好久

运行

我内存也比较多,所以也4g扔出去:)

后来看了下运行代码,默认2g,推荐-k 参数,启用kvm