logo资料库

20个Yocto实际使用问题.pdf

第1页 / 共37页
第2页 / 共37页
第3页 / 共37页
第4页 / 共37页
第5页 / 共37页
第6页 / 共37页
第7页 / 共37页
第8页 / 共37页
资料共37页,剩余部分请下载后查看
1.Yocto 编译后文件放在了哪里 输出文件位置
2.Yocto Linux内核编译目录在哪?
3.Yocto 如何重新编译Linux内核与dtb,并放到deploy目录?
4.Yocto 如何确定(找到)一个包的名字
5.Yocto如何更改source code的下载与git clone地址
6.Yocto中如何共享已经下载的文件
7.Yocto Bitbake的clean与cleanall以及cleansstate的区别
8.Yocto 如何加快软件包的下载 如何只下载所有需要的软件包
9.Yocto 软件包的下载地址在哪
10.Yocto hellworld 添加一个软件包
11.Yocto如何往最终的rootfs中添加软件
12.使用Yocto帮组我们寻找难找的固件与固件放置路径
13.Yocto 查看软件包的依赖关系
14.Yocto中编译链的配置变更(tuning)
15.Yocto中的包管理器
16. Yocto 制作SDK分发Toolchain 脱离Yocto环境开发
17.Yocto License问题:restricted license not whitelisted in LICENSE_FLAGS_WHITELIST
18.Yocto SDK Toolchian中静态库的添加
19.Yocto SDK Toolchian的使用
20.Yocto中qemu模拟器的使用,以zynq Cortex-A9为例
1.Yocto 编译后文件放在了哪里 输出文件位置 编译完成后内核以及 rootfs,内核,uboot 以及 dtb 会放在相对于 build 目录的 tmp/deploy/ images/MACHINE/下面,这里 MACHINE 需要可能为空(对于老版本的 poky/yocto),也可 能是你的板子名字,例如 sabresd。 对于 toolchain,那么放在 tmp/deploy/sdk/MACHINE/下。 图片示例: 编 译 完 成 后 内 核 以 及 rootfs 以 及 dtb 会 放 在 相 对 于 build 目 录 的 tmp/deploy/images/ imx6qsabresd/下面 各个文件都有一个软连接来指向最新编译产生的文件,因此如果需要看到最新的文件,可以直 接使用软链接即可:
2.Yocto Linux 内核编译目录在哪? 内核放在了哪里? 这个是放在了如下位置,我们可以用下面命令来确定: bitbake -e linux-imx | grep ^S= 图示: 3.Yocto 如何重新编译 Linux 内核与 dtb,并放到 deploy 目 录? 编译内核,并生成 uImage+dtb,编译的命令如下: bitbake linux-imx -C compile 注意这里的-C 的 C 是大写,和小写的 c 是有区别的。 注意这里的 linux-imx 是针对 imx 的内核,你的内核名字可能不一样,关于如何确定一个包的名 字,请看:Yocto tips (4): Yocto 如何确定(找到)一个包的名字 4.Yocto 如何确定(找到)一个包的名字 使用下面命令来却确定: bitbake -s | grep XXX 其中 XXX 为包的关键字,例如 linux 或者 uboot,这样就可以看到所有带有关键字的包了,如 下图,就是为了找到内核:
5.Yocto 如何更改 source code 的下载与 git clone 地址 现象 Yocto 中在 fetch 一些软件包的时候经常出现一天也下载不下来,这种情况极大浪费了我们的 时间。 例如,下面有三个 Package 下载了一天也没有完成: 解决方法 确定下载的地址,手动下载 先确定软件包的下载地址,例如对于 opencv 与 opencv-samples 软件包: 可以看到他们的 git 地址都是一样的,因此,我们可以手动来 git clone:
可以看到我们只使用了几十分钟而已。clone 下来以后,我们就可以让软件包使用我们本地的 这个 repo 了,而不需要忙忙的去远程 repo 去 clone。 让 package 克隆时使用本地的 git 找到软件包对应的 bb 文件 我们可以使用 find 命令来查找 更改 bb 文件 注意里面添加了一个 protocol 指定。 再一次获取
bitbake opencv -c fetch 结果如下: 提示找不到 branch,于是我们到我们本地的 repo 中将此 branch 切出来,也可以将其制作 成 bare repo: 然后再一次进行 fetch 就可以了:
对于其他软件也是类似的。 6.Yocto 中如何共享已经下载的文件 Yocto 的下载耗时可能会超过编译的时间,因此大家都希望下载一次后大家都用共 用下载好了的文件,而不要再去下载。 Yocto 中所有下载了的以及 git clone 的文件都放在环境变量 DL_DIR 指示的目录下, 这个目录默认在 machine build directory 下面。 因此要共享下载文件只需要指定此变量到下载好了的目录即可,可以在 local.conf 中指定即可:
7.Yocto Bitbake 的 clean 与 cleanall 以及 cleansstate 的区 别 Yocto 中对于不同的 Package,有不同的 task,即可以执行不同的操作,有一些是 所有包共通的,例如 clean,build 等。 我们可以使用下面命令来查看一个包都有哪些可执行的 task: bitbake Package -c listtasks 图示:
我们可以从里面看到 clean 与 cleanall 以及 cleansstate 的区别。 8.Yocto 如何加快软件包的下载 如何只下载所有需要的软件包 加快下载 Yocto 中下载是最耗时的,因此我们可以尽可能的开启最多的并行数量。 对此,我们可以在 local.conf 中将并行数目调大,例如我的 CPU 是 E3-1230 v2, 8 核,所以我可以开启 16 个线程来下载,因为我们的网速慢,所以其实这些下载操作 并非 CPU 密集型任务,很多包也很小,所以同时 IO 也不密集,因此可以适当调大:
分享到:
收藏