openwrt buildroot build_dir 和 staging_dir

标签 openwrt

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

openwrt中有feeds。我想建立一个形象。您将在 menuconfig 中选择所需的包并使用 make 来构建它。

feeds 获取包,然后编译到 build_dir 中?

那么staging_dir有什么用呢?

最佳答案

目录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... 中还有一些其他文件,主要用于生成包、开发包等。

抱歉,有点冗长,很难更简洁地描述。

关于openwrt buildroot build_dir 和 staging_dir,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26030670/

相关文章:

c - 使用 UCI 的 C API 在特定部分下添加选项

c++ - 配置OpenWrt进行socket编程的问题

router - 强制门户 - Chillispot | OpenWrt 与 DD-wrt

python - 嵌入式 C PWM 调光器到 Django Web 应用程序

c++ - upnp 从 openWRT 路由器发现 Philips hue

linux - luci 编译错误 :iwinfo. h: No such file or directory

C http 服务器在不可预测的时间后停止

authentication - OpenWrt:LuCI:如何实现受限用户访问

MySQL - 无法登录 - 访问被拒绝 - 全新安装 (OpenWRT)

linux - 如何更改 openwrt Makefiles 以仅生成一个图像