首页 文章

openwrt buildroot build_dir和staging_dir

提问于
浏览
18

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

在openwrt中有 feeds . 我想要 Build 一个图像 . 您将在 menuconfig 中选择所需的包,并使用 make 来构建它 .

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

那么 staging_dir 用于什么?

1 回答

  • 32

    目录 build_dir 用于解压缩所有源存档并在其中编译它们 .

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

    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/ ,_ _1189580_等,其中包含用于构建其余固件的交叉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-... 包含'installed'版本的每个目标包再次与 bin/lib/ 一起排列,这将成为实际的根目录,通过一些调整将压缩到固件映像,类似于 root-ar71xx . staging_dir/target... 中还有一些其他文件主要用于生成包和开发包等 .

    对不起它有点冗长,这很难描述得更简洁 .

相关问题