我对openwrt buildroot中的build_dir
和staging_dir
感到困惑。 他们用于什么?openwrt buildroot build_dir和staging_dir
openwrt中有feeds
。我会想象建立一个形象。你将在menuconfig
中选择你想要的包,并使用make
来构建它。
包从feeds
取得,然后编译成build_dir
?
那么什么是staging_dir
用于?
我对openwrt buildroot中的build_dir
和staging_dir
感到困惑。 他们用于什么?openwrt buildroot build_dir和staging_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标准库组件。此区域将用于编译仅在您的主机上运行的程序(例如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-ar71xx
。 staging_dir/target...
还有一些其他文件主要用于生成软件包和开发包等。对不起,它有点冗长,这很难形容得更简洁。
你是对的钱!非常感谢! – dudeking 2014-12-03 21:20:56
为每种类型的路径提及相应的Makefile变量也是非常有用的。谢谢 – 2017-11-08 12:48:09
非常好的问题和答案。+1 – Haswell 2015-11-05 11:04:28