2014-09-25 540 views
13

我对openwrt buildroot中的build_dirstaging_dir感到困惑。 他们用于什么?openwrt buildroot build_dir和staging_dir

openwrt中有feeds。我会想象建立一个形象。你将在menuconfig中选择你想要的包,并使用make来构建它。

包从feeds取得,然后编译成build_dir

那么什么是staging_dir用于?

+0

非常好的问题和答案。+1 – Haswell 2015-11-05 11:04:28

回答

27

目录build_dir用来打开所有源档案和编译他们进来

目录staging_dir是用来“装”的所有编译的程序之中,愿意或者用于建设进一步包,或用于准备固件图像。

build_dir在三个方面:

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

在升级,也有三个方面:

  • staging_dir/host是一个带有自己的bin/,lib/等等的主机工具安装到的迷你Linux根目录;编译系统的其余部分将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...还有一些其他文件主要用于生成软件包和开发包等。

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

+0

你是对的钱!非常感谢! – dudeking 2014-12-03 21:20:56

+0

为每种类型的路径提及相应的Makefile变量也是非常有用的。谢谢 – 2017-11-08 12:48:09