openwrt buildroot build_dir 和 staging_dir

问题描述 投票:0回答:2

我对 openwrt buildroot 中的

build_dir
staging_dir
感到困惑。 它们有什么用?

openwrt中有

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

feeds
获取包,然后编译成
build_dir

那么

staging_dir
是用来做什么的?

openwrt
2个回答
45
投票

目录

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

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


0
投票

想象一下您正在建造一个机器人。要建造机器人,您需要组装不同的零件和工具。同样,在构建固件(设备的软件)时,您需要组织和编译不同的程序和工具。

build_dir:这就像一个研讨会,您可以在其中解压并编译构建固件所需的所有程序和工具。它分为三个区域:

build_dir/host:这是编译在计算机上运行的工具的位置。例如,如果您需要像“sed”这样的工具的特殊版本,您可以在这里编译它。

build_dir/toolchain:您可以在此处编译构建固件所需的跨 C 编译器和 C 标准库组件。它还编译设计用于在您正在为其构建固件的设备上运行的库。 build_dir/target:这是您为要为其构建固件的设备编译实际程序和 Linux 内核的位置。 staging_dir:这就像一个存储区域,您可以在其中“安装”所有已编译的程序和工具。它分为三个区域:

staging_dir/host:这就像一个带有自己的工具集的迷你操作系统。您编译的工具安装在这里,构建系统使用它们来构建固件。

staging_dir/toolchain:这是另一个迷你操作系统,有自己的一套工具,包括用于构建固件的跨C编译器。您还可以使用它来编译固件之外的简单 C 程序。

staging_dir/target:这包含每个目标包的“已安装”版本,按 bin/ 和 lib/ 排列。这将成为压缩到固件映像中的实际根目录。

我希望这个解释有助于更简单地阐明 build_dir 和 staging_dir 的目的!

更多详情,您可以参考以下链接https://openwrt.org/docs/guide-developer/toolchain/buildsystem_essentials

© www.soinside.com 2019 - 2024. All rights reserved.