yocto devtool 使用
1、devtool add 命令
devtool add 有3种用法:如下图
改图表示,devtool 会提取源代码到 build/workspace目录,并自动创建一个菜谱文件
2、先使用左边的图中方法
devtool add recipe fetchuri
recipe:是会自动创建一个菜谱的名字
fetchuri:是源代码的,git地址
下面这个例子,使用我自己的一个hello_word测试代码的git厂库,我定义自动生成的菜谱名字为 hello-word-vi
devtool add hello-world-v1 https://github.com/lshjn/hello_world-v1.git
3、上图最后显示,在 /build/workspace/recipes/目录里自动创建了一个hello-world-v1目录,在该目录下创建了一个hello-world-v1_git.bb文件,如下图
提取的文件在: build/workspace/sources/hello-world-v1 目录里
4、查看菜谱的内容
5、第二种方式
devtool add recipe srctree fetchuri
srctree:表示我们提取文件到自定义目录,前提存在这个目录且目录是非空的
eg: 如下操作步骤
1、cd /home/lsh/yocto/poky 2、mkdir meta-hello-world-v1 3、devtool add meta-hello-world-v1 ~/yocto/poky/meta-hello-world-v1/ http://liushuhe.familyds.com:30000/liushuhe/hello_world_v1.git
6、操作成功,会在 将源代码提取到/home/lsh/yocto/poky/meta-hello-world-v1/目录,并在/home/lsh/yocto/poky/build/workspace/recipes/meta-hello-world-v1/创建菜谱文件meta-hello-world-v1_git.bb
7、第3种方法
前提:是在第二种方法基础上工作的,必须要自己创建目录且提取文件成功后,才能用第三种方法
devtool add recipe srctree
这个方法是给之前的提取的代码重新创建一个新菜谱
devtool add meta-hello-workd-v2 /home/lsh/yocto/poky/meta-hello-world-v1
下图展示了创建成功后的截图
8、下面展示一下,完整的使用devtool拉取代码,修改代码,提交更改的过程
注:这个修改代码是基于菜谱来修改的,所以必须先用devtool add将文件拉取下来,且不能放在/build/workspace/目录,devtool add 会自动创建一个菜谱文件
1、进入工作目录
cd /home/lsh/yocto/poky
mkdir meta-helloworld
2、配置环境
source oe-init-build-env
3、devtoo提取代码
devtool add meta-helloworld ~/yocto/poky/meta-helloworld/ http://liushuhe.familyds.com:30000/liushuhe/hello_world_v1.git
4、上图显示,源码被提取到 /poky/meta-helloworld目录,自动创建的菜谱被放在了 build/workspace/recipes/meta-helloworld/目录,菜谱名为 meta-helloworld_git.bb
修改菜谱,加上编译命令
5、可以编译这个菜谱,这个命令会将编译输出移动到目标硬件,可能比较费时间,可以不做这个步骤
devtool build meta-helloworld
6、使用菜谱完成命令,这个命令在本地git厂库中创建提交任何补丁,将菜谱移动到永久存在的layer中,以便正常构建,而不是从workspace中构建
devtool finish meta-helloworld meta-lsh
7、注意上面的操作,必须要指定完成的菜谱提交到那个层 layer,我是提交到meta-lsh,如果没有这个层,就需要手动创建
创建自己的层 1、cd /home/lsh/yocto/poky 2、bitbake-layers create-layer meta-lsh 3、cd /home/lsh/yocto/poky/build 4、bitbake-layers add-layer ../meta-lsh
8、菜谱完成命令成功后,如下图
上图显示,菜谱被移动到 /yocto/poky/meta-lsh目录下
9、用 devtool modify 修改文件,这个指令会根据meta-helloworld菜谱里git将代码重新提取到、/poky/build/workspace/目录
devtool modify meta-helloworld
10、上图显示,源码被提取到了 /build/workspace/source/meta-helloworld目录,并且又自动创建了一个菜谱 位于 /build/workspace/sources/meta-helloworld目录
上图可以看到这个提取是新建一个git厂库,所有修改了得代码都需要在finish之前进行提交,例如这个更改
git提交命令
1、git add hello_world_v1.c 2、git commit
11、执行 devtool finish 命令。可以看出给我们自动添加了一个补丁文件
12、现在回到 /poky/meta-lsh/repices-meta-helloworld/meta-helloworld/目录,可以看到有一个菜谱文件
meta-helloworld_git.bb
查看内容,发现被新加了一个补丁文件,补丁文件位于
查看补丁文件内容
从补丁文件可以看出来,我们做的修改