我对openwrt buildroot中的build_dir
和staging_dir
感到困惑。
它们用于什么?
openwrt中有feeds
。我想要建立一个图像。您将在menuconfig
中选择所需的软件包,然后使用make
进行构建。
从feeds
获取包,然后编译成build_dir
?
那么staging_dir
用于什么?
答案 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-ar71xx
。 staging_dir/target...
中还有一些其他文件主要用于生成包和开发包等。对不起它有点冗长,这很难说得更简洁。