openwrt buildroot build_dir和staging_dir

时间:2014-09-25 04:41:41

标签: openwrt

我对openwrt buildroot中的build_dirstaging_dir感到困惑。 它们用于什么?

openwrt中有feeds。我想要建立一个图像。您将在menuconfig中选择所需的软件包,然后使用make进行构建。

feeds获取包,然后编译成build_dir

那么staging_dir用于什么?

1 个答案:

答案 0 :(得分:33)

目录build_dir用于解压缩所有源档案并进行编译。

目录staging_dir用于"安装"所有已编译的程序,可用于构建更多包,或用于准备固件映像。

build_dir下有三个区域:

  • build_dir/host,用于编译在主机上运行的所有工具(OpenWRT构建自己的sed版本以及源代码中的许多其他工具)。此区域将用于编译仅在主机上运行的程序。
  • build_dir/toolchain...用于编译将用于构建包的交叉C编译器和C标准库组件。该区域将用于编译仅在您的主机(例如,交叉C编译器)上运行的程序,以及用于在链接到目标的目标上运行的库。 uClibc,libm,pthreads等
  • build_dir/target...用于编译目标系统的实际软件包和Linux内核

在分期中,还有三个方面:

  • staging_dir/host是一个迷你Linux根目录,它有自己的bin/lib/等主机工具安装到其中;然后构建系统的其余部分在其PATH前面加上该区域中的目录
  • staging_dir/toolchain...是一个迷你Linux根目录,它有自己的bin/lib/等,其中包含用于构建其余固件的交叉C编译器。您实际上可以使用它来编译OpenWRT之外的可以加载到固件上的简单C程序。 C编译器可能类似于:staging_dir/toolchain-mips_34kc_gcc-4.8-linaro_uClibc-0.9.33.2/bin/mips-openwrt-linux-uclibc-gcc。您可以看到CPU的版本,C库和编码的gcc;这允许同时在同一区域内构建多个目标。
  • staging_dir/target.../root-...包含'已安装'每个目标包的版本再次与bin/lib/一起排列,这将成为实际的根目录,其中一些调整将被压缩到固件映像中,如root-ar71xxstaging_dir/target...中还有一些其他文件主要用于生成包和开发包等。

对不起它有点冗长,这很难说得更简洁。