Yocto实用技巧
文章平均质量分 53
对于大家使用Yocto中的一些疑问,使用寥寥数语进行解答,让大家快速高效地使用Yocto。
TonyHo
这个作者很懒,什么都没留下…
展开
-
Yocto tips (20): Yocto中qemu模拟器的使用,以zynq Cortex-A9为例
在以前的文章《使用Buildroot与Qemu学习ARM linux IIC驱动》中,写到过使用qemu来模拟使用ARM Linux,那个时候借助的是buildroot,这次我们使用Yocto来做同样的事情。优点使用Qemu的好处在于,当我们在开发Userspace的程序时,可以在没有硬件的情况下完成测试。同时不像以前一样我们需要自己去编译qemu,这次我们使用Yocto编译出来的原创 2016-05-16 15:13:47 · 11099 阅读 · 2 评论 -
Yocto tips (19): Yocto SDK Toolchian的使用
在使用之前需要先source env,导入各种环境变量:source ../qt5_sdk/environment-setup-cortexa9hf-vfp-neon-poky-linux-gnueabi然后我们可以查看一下bash的env了,下面是多出来的一些env:declare -x AR="arm-poky-linux-gnueabi-ar"declare -x ARCH原创 2015-12-23 17:03:41 · 8978 阅读 · 6 评论 -
Yocto tips (18): Yocto SDK Toolchian中静态库的添加
Toolchian中静态库的添加没有静态库,是无法静态编译应用程序的,因此,为了方便,还需要在SDK中添加静态库,例如libc。这个特性在只需要开启即可,在local.conf中添加一行:SDKIMAGE_FEATURES_append = "staticdev-pkgs"Toolchian中静态库的验证然后重新build SDK,并安装SDK之后,我们可以验证其是原创 2015-12-23 16:32:30 · 6024 阅读 · 1 评论 -
Yocto tips (16): Yocto 制作SDK分发Toolchain 脱离Yocto环境开发
Yocto中SDK有两种:只有Toolchain,或者Toolchain+某类GUI特性有针对某个Distribution的SDK,即含有Toolchian也含有这个Distrbutition特殊的文件下面分别说明。第一类这类的软件包有如下这些:其实就是两类:meta-toolchainmeta-toolchain-qt/qte/qt5后原创 2015-12-23 16:22:39 · 11932 阅读 · 2 评论 -
Yocto tips (17): Yocto License问题:restricted license not whitelisted in LICENSE_FLAGS_WHITELIST
Yocto中可以配置一个Distrbution的License,然后所有的软件包,都需要符合这个license才可以被shipped到image中,如果我们需要使用违反此license的软件包,那么就需要额外配置。例如,在bitbake编译vlc的时候出现下面的错误log:$ bitbake vlcParsing recipes: 100% |######################原创 2015-12-23 15:53:30 · 6793 阅读 · 0 评论 -
Yocto tips (9): Yocto 软件包的下载地址在哪
一般而言,可以使用Yocto tips (5): Yocto如何更改source code的下载与git clone地址中提到的方法,但是有的时候一些地址是在bb文件include的文件中,而inc文件又可能层层包含,查找比较繁琐,因此直接到env中查找比较快。例如要找到imx kenrel的fetch地址可以使用下面命令:bitbake -e linux-imx | grep ^SRC_原创 2015-12-23 15:04:55 · 5053 阅读 · 0 评论 -
Yocto tips (10): Yocto hellworld 添加一个软件包
Yocto中一个软件包是放在bb文件中的,然后很多的bb文件集成一个recipe(配方),然后许多的recipe又组成一个meta layer,因此,要添加一个包其实就是在recipe下面添加一个bb(bitbake配置文件)。下面使用helloworld作为一个例子。clone bb文件首先是进入到一个recipe目录下,例如下面就是到了recipes-graphics:$ pwd原创 2015-12-23 09:43:20 · 12244 阅读 · 11 评论 -
Yocto tips (15): Yocto中的包管理器
使用包管理器在local.conf中使能即可:然后编译后就会有rpm包了:配置文件服务器可以使用ngix和apache,但是我们也可以只用使用python:python -m SimpleHTTPServer打开浏览器可以看到:在机器上面查看包的statussmart status在机器上面配置channel原创 2015-12-22 16:11:16 · 8604 阅读 · 1 评论 -
Yocto tips (14): Yocto中编译链的配置变更(tuning)
这个在我们自己编译toolchain以及针对不同的硬件自己调整toolchain的时候用得多。变更方法也很简单,只需要在poky对应的配置查找一个合适的即可。例如针对armv7而言,我们可以到下面文件查找一个合适的来使用:将自己选择好的写入到local.conf中:原创 2015-12-21 22:44:26 · 5377 阅读 · 0 评论 -
Yocto tips (13): Yocto 查看软件包的依赖关系
查看一个文件包的依赖,我们可以使用图形化来查看,下面是一些官方说明:例如我们要查看weston的依赖:bitbake --ui=depexp -g weston或者 bitbake -g -u depexp weston这个会列出不同的依赖,例如中间的是编译时候需要依赖的东西,结果如下:原创 2015-12-21 22:37:03 · 6446 阅读 · 0 评论 -
Yocto tips (12): 使用Yocto帮组我们寻找难找的固件与固件放置路径
有很多的硬件需要firmware才能工作,而这些firmware需要不仅仅需要找到,还需要放置到正确的位置,一般这个位置是/lib/firmware下面,但是很多也不尽然。手动去查找这些固件,容易出现遗漏或者混淆,也有可能是年久不匹配了的固件,例如在我前面的博客中:Yocto i.MX6 (TQIMX6) (02) : USB Wifi (TP-Link WN821N等设备)AR9170的Li原创 2015-12-21 21:15:36 · 3064 阅读 · 0 评论 -
Yocto tips (11): Yocto如何往最终的rootfs中添加软件
在Yocto中如果我们期望在rootfs中添加一些软件,例如可能是bash,可能是lsusb等,那么,我们可以有两种方法:手动添加,一个个文件的拷贝在bb文件中添加安装项目,让Yocto自动帮助我们添加第一种方法需要手动将软件包的所有文件以及依赖都一个个添加进去,耗时耗力且易错,因此使用第二中方法比较合适。Yocto中Rootfs中添加软件包的步骤找到打包roo原创 2015-12-21 10:34:24 · 18915 阅读 · 2 评论 -
Yocto tips (8): Yocto 如何加快软件包的下载 如何只下载所有需要的软件包而不编译
加快下载Yocto中下载是最耗时的,因此我们可以尽可能的开启最多的并行数量。对此,我们可以在local.conf中将并行数目调大,例如我的CPU 是E3-1230 v2, 8核,所以我可以开启16个线程来下载,因为我们的网速慢,所以其实这些下载操作并非CPU密集型任务,很多包也很小,所以同时IO也不密集,因此可以适当调大:效果如下:下载所有需要的软件包而不编译有原创 2015-12-20 13:57:53 · 8159 阅读 · 0 评论 -
Yocto tips (7): Yocto Bitbake的clean与cleanall以及cleansstate的区别
Yocto中对于不同的Package,有不同的task,即可以执行不同的操作,有一些是所有包共通的,例如clean,build等。我们可以使用下面命令来查看一个包都有哪些可执行的task:bitbake Package -c listtasks图示:我们可以从里面看到clean与cleanall以及cleansstate的区别。原创 2015-12-20 13:46:36 · 28826 阅读 · 6 评论 -
Yocto tips (6): Yocto中如何共享已经下载的文件
Yocto的下载耗时可能会超过编译的时间,因此大家都希望下载一次后大家都用共用下载好了的文件,而不要再去下载。Yocto中所有下载了的以及git clone的文件都放在环境变量DL_DIR指示的目录下,这个目录默认在machine build directory下面。因此要共享下载文件只需要指定此变量到下载好了的目录即可,可以在local.conf中指定即可:原创 2015-12-20 12:36:04 · 4465 阅读 · 0 评论 -
Yocto tips (5): Yocto如何更改source code的下载与git clone地址
现象Yocto中在fetch一些软件包的时候经常出现一天也下载不下来,这种情况极大浪费了我们的时间。例如,下面有三个Package下载了一天也没有完成:解决方法确定下载的地址,手动下载先确定软件包的下载地址,例如对于opencv与opencv-samples软件包:可以看到他们的git地址都是一样的,因此,我们可以手动来git clone:原创 2015-12-20 11:53:02 · 13038 阅读 · 3 评论 -
Yocto tips (4): Yocto 如何确定(找到)一个包的名字
使用下面命令来却确定:bitbake -s | grep XXX其中XXX为包的关键字,例如linux或者uboot,这样就可以看到所有带有关键字的包了,如下图,就是为了找到内核:原创 2015-12-19 23:35:17 · 7646 阅读 · 3 评论 -
Yocto tips (3): Yocto 如何重新编译Linux内核与dtb,并放到deploy目录?
编译内核,并生成uImage+dtb,编译的命令如下:bitbake linux-imx -C compile注意这里的-C的C是大写,和小写的c是有区别的。注意这里的linux-imx是针对imx的内核,你的内核名字可能不一样,关于如何确定一个包的名字,请看:Yocto tips (4): Yocto 如何确定(找到)一个包的名字原创 2015-12-19 23:36:30 · 14246 阅读 · 2 评论 -
Yocto tips (2): Yocto Linux内核编译目录在哪?
内核放在了哪里? 这个是放在了如下位置,我们可以用下面命令来确定:bitbake -e linux-imx | grep ^S=图示:原创 2015-12-19 23:19:46 · 7393 阅读 · 0 评论 -
Yocto tips (1): Yocto 编译后文件放在了哪里 输出文件位置
编译完成后内核以及rootfs,内核,uboot以及dtb会放在相对于build目录的tmp/deploy/images/MACHINE/下面,这里MACHINE需要可能为空(对于老版本的poky/yocto),也可能是你的板子名字,例如sabresd。对于toolchain,那么放在mp/deploy/sdk/MACHINE/下。图片参考博客:Yocto i.MX6 (T原创 2015-12-19 23:09:10 · 9376 阅读 · 0 评论