yocto系列讲解 (技巧篇) 66 - 设备的文件系统中安装gcc

By: fu linux
E-mail: fulinux@sina.com
Blog: https://blog.csdn.net/fulinus
喜欢的盆友欢迎点赞和订阅!
你的喜欢就是我写作的动力!

返回总目录 Yocto开发讲解系列 - 总目录

问题和分析

在某些时候,我们需要在自己的设备中安装gcc编译器,可以直接在机器中编程,然后直接编译和运行。
这个看似有点匪夷所思或者多余,但是确实存在这种需求的场景。

gcc
Machine
安装

我们以前在文件系统中添加某个应用或者库文件等的方法都是使用

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工具。

当然添加这一套工具之后势必会导致文件系统变大,这也是一个不稳定的因素,毕竟有的机器存储设备比较小,可能安装不了,或者文件系统大小做了限制,这些都要考虑到!可以适当的调整哦~