zoukankan      html  css  js  c++  java
  • yocto 离线编译

    使用yocto编译一个软件包时,一般会先在本地寻找下载好的源码包,如果不存在则根据配置从网络下载。

    添加本地源码包

    为了支持离线编译,添加一个包的配置文件后,需要在本地也准备好源码包。

    可以先打开网络连接,让yocto帮我们下载好所需的源码包。最终连同源码包一起提交到本地仓库中,后续即不再需要网络连接。

    打开网络的方式:

     build/conf/local.conf
    

    配置文件中,修改

     BB_NO_NETWORK = "0"
    

    添加好bb文件,进行一次编译,或者,单独执行fetch进行下载,如

     bitbake android-tools -c fetch
    

    指定commit id

    如果已经在本地添加了源码包,但每次编译,yocto还是提示需要网络的话,则可能是未配置具体的commit id。

    一个例子如下,报错信息

    ERROR: android-tools-5.1.1.r37-r0 do_fetch: Network access disabled through BB_NO_NETWORK (or set indirectly due to use of BB_FETCH_PREMIRRORONLY) but access requested with command git -c core.fsyncobjectfiles=0 ls-remote https://android.googlesource.com/platform/system/core  (for url https://android.googlesource.com/platform/system/core)
    ERROR: android-tools-5.1.1.r37-r0 do_fetch: Function failed: base_do_fetch
    

    搜索可找到如下参考资料

    https://lists.yoctoproject.org/pipermail/yocto/2012-September/009586.html

    https://wiki.yoctoproject.org/wiki/How_do_I#Non-networked_Builds_and_Cached_Git_Respositories

    大概的意思是,如果没有指定具体的commit id,则yocto每次还是需要到远程仓库去获取一下信息。

    最终解决方式,即为添加SRC_REV指定具体的commit id。具体到android-tools这个包,官方已有patch解决。

    https://github.com/openembedded/meta-openembedded/commit/aeca0185a6190f73f3c12e63f55c208ba3d16f6e

    如果poky仓库已经锁定到某个版本。则需要自行在其他layer中,创建bbappend文件,在其中配置SRC_REV来解决这个问题。

  • 相关阅读:
    字典树
    Floyd算法
    迪杰斯特拉算法---单源点最短路径
    二叉树的遍历
    图的遍历
    二叉排序树
    拓扑排序
    开发中框架的发展
    IOC
    JS操作JSON总结
  • 原文地址:https://www.cnblogs.com/zqb-all/p/9977924.html
Copyright © 2011-2022 走看看