By: fu linux
E-mail: fulinux@sina.com
Blog: https://blog.csdn.net/fulinus
喜欢的盆友欢迎点赞和订阅!
你的喜欢就是我写作的动力!
返回总目录 : Yocto开发讲解系列 - 总目录
问题和分析
在某些时候,我们需要在自己的设备中安装gcc编译器,可以直接在机器中编程,然后直接编译和运行。
这个看似有点匪夷所思或者多余,但是确实存在这种需求的场景。
我们以前在文件系统中添加某个应用或者库文件等的方法都是使用
IMAGE_INSTALL += "something"
- 1
变量。那么我们的gcc能否通过这种方式添加呢?
不推荐做法
当然是可以的,参考这个补丁文件:
+++ b/poky/meta-xxx/recipes-xxxx/images/xxxxx-image.inc
# Remove unwanted headers and sources copied into rootfs
purge_rootfs() {
- rm -rf ${IMAGE_ROOTFS}/usr/include
+ #rm -rf ${IMAGE_ROOTFS}/usr/include
rm -rf ${IMAGE_ROOTFS}/usr/src
rm -rf ${IMAGE_ROOTFS}/src
}
...
+++ b/poky/meta-aaa/recipes-aaa/images/aaa-image.inc
+IMAGE_INSTALL += "binutils"
+IMAGE_INSTALL += "gcc"
+IMAGE_INSTALL += "libc6-dev"
+IMAGE_INSTALL += "glibc-extra-nss"
+IMAGE_INSTALL += "glibc-thread-db"
+IMAGE_INSTALL += "libsegfault"
+#IMAGE_INSTALL += "libgcc-initial"
+IMAGE_INSTALL += "libcidn"
+++ b/poky/meta/recipes-core/glibc/glibc-package.inc
RPROVIDES_${PN}-doc = "eglibc-doc"
-RPROVIDES_glibc-extra-nss = "eglibc-extra-nss"
-RPROVIDES_glibc-thread-db = "eglibc-thread-db"
+RPROVIDES_glibc-extra-nss = "eglibc-extra-nss glibc-extra-nss-dev"
+RPROVIDES_glibc-thread-db = "eglibc-thread-db glibc-thread-db-dev"
+RPROVIDES_libsegfault = "libsegfault-dev"
+RPROVIDES_libcidn = "libcidn-dev"
RPROVIDES_${PN}-pcprofile = "eglibc-pcprofile"
+++ b/poky/meta/recipes-core/glibc/glibc.inc
DEPENDS = "virtual/${TARGET_PREFIX}gcc-initial libgcc-initial linux-libc-headers virtual/${TARGET_PREFIX}libc-initial"
+DEPENDS_remove = "libgcc-initial"
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
不过这个是 不推荐 的做法!可能会有遗漏和不完整的地方。
推荐的做法
Yocto工程已经考虑到大家这种需求了,专门给我们安排了一个这个变量来使能添加gcc编译器的方法:
#在poky/build/conf/local.conf添加
EXTRA_IMAGE_FEATURES += "tools-sdk"
- 1
- 2
然后编译一遍,在文件系统中就有了gcc工具。
当然添加这一套工具之后势必会导致文件系统变大,这也是一个不稳定的因素,毕竟有的机器存储设备比较小,可能安装不了,或者文件系统大小做了限制,这些都要考虑到!可以适当的调整哦~