bb文件中的变量

在 Yocto 和 BitBake 配方(`.bb` 文件)中,有一些重要的**默认文件夹变量**用于指向构建过程中的不同目录。这些变量在开发和构建过程中非常重要,了解它们的含义可以帮助你正确地管理源代码、构建输出和依赖关系。下面是一些常用的目录变量及其解释:

---

### **常见目录变量及其含义**

1. **`${TOPDIR}`**  
   - **定义**:构建系统的顶级目录。  
   - **默认路径**:通常是你运行 `bitbake` 命令时所在的 `build/` 目录。  
   - **用途**:存放 Yocto 项目的所有构建文件和配置文件。  
   - **示例**:
     ```bash
     /path/to/yocto/build
     ```

2. **`${WORKDIR}`**  
   - **定义**:每个配方(`.bb` 文件)在构建过程中使用的**工作目录**。  
   - **默认路径**:`${TMPDIR}/work/${MULTIMACH_TARGET_SYS}/${PN}/${EXTENDPE}${PV}-${PR}`  
     - `TMPDIR`:构建临时目录  
     - `PN`:配方名称  
     - `PV`:配方版本  
   - **用途**:存储解压后的源代码、构建产物和日志等。  
   - **示例**:
     ```bash
     /path/to/yocto/build/tmp/work/x86_64-poky-linux/helloworld/1.0-r0/
     ```

3. **`${S}`**  
   - **定义**:源码目录,解压后的源代码通常放在 `${WORKDIR}` 中的一个子目录,并且 `S` 会指向该目录。  
   - **默认路径**:`${WORKDIR}/<解压后的源码目录>`  
   - **用途**:BitBake 在这个目录中运行 `do_compile()`、`do_configure()` 等构建任务。  
   - **示例**:
     ```bash
     /path/to/yocto/build/tmp/work/x86_64-poky-linux/helloworld/1.0-r0/helloworld-1.0
     ```

4. **`${B}`**  
   - **定义**:构建目录。某些项目支持源代码和构建文件分开管理时,`B` 会用于存放构建文件。  
   - **默认路径**:通常等于 `${S}`,但可以自定义。  
   - **用途**:在这个目录下执行 `make` 等构建工具。

5. **`${D}`**  
   - **定义**:目标安装目录。在 `do_install()` 阶段,文件会安装到这个目录,然后打包工具会将其转移到最终包中。  
   - **默认路径**:`${WORKDIR}/image`  
   - **用途**:存放即将打包的文件和目录结构。

6. **`${TMPDIR}`**  
   - **定义**:Yocto 构建的临时目录,存放所有工作目录、构建缓存和构建产物。  
   - **默认路径**:`build/tmp/`  
   - **用途**:存储构建过程中的中间文件和临时数据。

7. **`${STAGING_DIR}`**  
   - **定义**:工具链和开发头文件等中间产物存放的目录。  
   - **用途**:用于交叉编译时需要的头文件、库和工具的缓存。

8. **`${PN}`**  
   - **定义**:配方名称(Package Name)。  
   - **用途**:通常表示 `.bb` 文件的名称,作为包管理中的名字。

9. **`${PV}`**  
   - **定义**:配方版本(Package Version)。  
   - **用途**:表示软件包的版本号,来源于配方文件的 `PV` 变量。

10. **`${PR}`**  
   - **定义**:配方修订版(Package Revision)。  
   - **用途**:用于跟踪相同版本的多次构建。

---

### **示例:配方文件使用这些变量**

```bb
DESCRIPTION = "Hello World Example"
LICENSE = "MIT"
SRC_URI = "file://helloworld-1.0.tar.gz"

S = "${WORKDIR}/helloworld-1.0"

do_compile() {
    bbwarn "Current Directory: $(pwd)"
    bbwarn "Source Directory: ${S}"
    cd ${S}
    oe_runmake
}

do_install() {
    install -d ${D}/usr/bin
    install -m 0755 ${S}/helloworld ${D}/usr/bin/
}
```

---

### **总结**
- `${TOPDIR}`:构建顶级目录。
- `${WORKDIR}`:配方的工作目录。
- `${S}`:源码目录。
- `${B}`:构建目录(通常等于 `${S}`)。
- `${D}`:安装目录,用于打包。
- `${TMPDIR}`:临时构建目录。

理解这些变量的含义和用途能帮助你在 Yocto 构建系统中更好地管理代码和构建产物。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值