# 使用 QSC CLI 编译

Source: [https://docs.qualcomm.com/doc/80-70014-254Y/topic/build_from_source_QSC_CLI.html](https://docs.qualcomm.com/doc/80-70014-254Y/topic/build_from_source_QSC_CLI.html)

以下章节提供了使用 QSC CLI 编译 Qualcomm Linux 的说明。

## 主机要求

Source: [https://docs.qualcomm.com/doc/80-70014-254Y/topic/build_from_source_QSC_CLI.html](https://docs.qualcomm.com/doc/80-70014-254Y/topic/build_from_source_QSC_CLI.html)

| 配置 | 工具 | 权限 |
| --- | --- | --- |
| x86 机器 | Git 1.8.3.1 或更高版本 | 有些命令在执行时需要 `sudo` 权限。 |
| 至少四核 CPU，例如 Intel i7-2600 @ 3.4 GHz（同等或更高配置） | Tar 1.28 或更高版本 | 有些命令在执行时需要 `sudo` 权限。 |
| 300 GB 可用磁盘空间（交换分区 &gt; 32 GB） | Python 3.10.2 或更高版本 | 有些命令在执行时需要 `sudo` 权限。 |
| 16 GB RAM | GCC 7.5 或更高版本 | 有些命令在执行时需要 `sudo` 权限。 |
| Ubuntu 22.04 | GNU Make 4.0 或更高版本 | 有些命令在执行时需要 `sudo` 权限。 |
|  |  |  |
|  |  |  |
|  |  |  |
|  |  |  |

## 安装 QSC CLI

Source: [https://docs.qualcomm.com/doc/80-70014-254Y/topic/build_from_source_QSC_CLI.html](https://docs.qualcomm.com/doc/80-70014-254Y/topic/build_from_source_QSC_CLI.html)

安装 `qsc-cli`：
1. 安装 curl（如果尚未安装）：

        sudo apt install curlCopy to clipboard
2. 下载 `qsc-cli` 的 Debian 软件包：

        cd <workspace_path>
        curl -L https://softwarecenter.qualcomm.com/api/download/software/qsc/linux/latest.deb -o qsc_installer.debCopy to clipboard
3. 安装 `qsc-cli` Debian 软件包：

        sudo dpkg -i qsc_installer.debCopy to clipboard
4. 登录到 `qsc-cli`：

        qsc-cli login -u <username>Copy to clipboard

Note: 需要登录一次 [chipcode.qti.qualcomm.com](http://chipcode.qti.qualcomm.com/) 才能下载 Qualcomm 专有的 git 代码仓库。使用您的 Qualcomm 帐号密码完成此步骤。
有关更多详细信息，参见[方法](https://docs.qualcomm.com/doc/80-70014-254Y/topic/how_to.html)章节中与 `qsc-cli` 相关的主题。

## 使用 QSC CLI

Source: [https://docs.qualcomm.com/doc/80-70014-254Y/topic/build_from_source_QSC_CLI.html](https://docs.qualcomm.com/doc/80-70014-254Y/topic/build_from_source_QSC_CLI.html)

本节提供有关如何使用 QSC CLI 下载、编译和重新编译 Qualcomm Linux 的说明。

### 下载

Note: 
                
如果您正在编译访问级别为“经过验证的组织的注册开发人员”或“获得额外访问权限的许可客户”的发行版，则必须在编译之前登录 `qpm-cli`：

    # Run the following command to login
    qpm-cli --login
    # Run the following command to verify if qpm-cli login is successful
    qpm-cli --product-listCopy to clipboard

此命令提示您输入用户名和密码。成功登录后，系统会获取并刷新产品列表。

- 下载特定的软件版本，指定产品 ID、版本 ID、发行版本和绝对/完整工作区路径，如以下示例所示：

        # qsc-cli download --workspace-path '<absolute_workspace_path>' --product '<Product_ID>' --build '<Build_ID>' --distribution '<Distro>'Copy to clipboard

    - 从[发行说明](https://docs.qualcomm.com/bundle/publicresource/topics/RNO-240626095531/)的 **QSC-CLI 输入参数**表格中选择 Product\_ID 和 Build\_ID 值。

示例：对于运行嵌入式 Linux (LE) 版本的 QCM6490，输入参数见下表：

| **Product\_ID (--product)** | QCM6490.LE.1.0Copy to clipboard |
        | --- | --- |
        | **Build\_ID (--build)** | QCM6490.LE.1.0-00218-STD.PROD-1Copy to clipboard |
    - 选择适当的发行版进行下载。发行版访问权限由下表所列的访问级别控制：
Note: 有关可用发行版的更多详细信息，参见[发行说明](https://docs.qualcomm.com/bundle/publicresource/topics/RNO-240626095531/)中的**权限受控发行版本**表格。

| **访问级别** | **发行版** | Yocto 层 |
        | --- | --- | --- |
        | 非注册/社区开发人员 | 基础版本：High-level 操作系统 (OS) 和预编译固件（仅限 GPS）<br>`Qualcomm_Linux.SPF.1.0|TEST|DEVICE|PUBLIC` | `meta-qcom`<br><br><br>                                                  <br>`meta-qcom-hwe` |
        | 非注册/社区开发人员 | 基础版本 + Qualcomm Intelligent Multimedia Product (QIMP) SDK<br>`Qualcomm_Linux.SPF.1.0|TEST|DEVICE|PB_QIMPSDK` | `meta-qcom`<br><br><br>                                                  <br>`meta-qcom-hwe`<br><br><br>                                                  <br>`meta-qcom-qim-product-sdk` |
        | 非注册/社区开发人员 | 基础版本 + QIMP SDK + Qualcomm Intelligent Robotics Product (QIRP) SDK<br>`Qualcomm_Linux.SPF.1.0|TEST|DEVICE|RoboApiLnx` | `meta-qcom`<br><br><br>                                                  <br>`meta-qcom-hwe`<br><br><br>                                                  <br>`meta-ros`<br><br><br>                                                  <br>`meta-qcom-robotics`<br><br><br>                                                  <br>`meta-qcom-robotics-distro`<br><br><br>                                                  <br>`meta-qcom-robotics-sdk`<br><br><br>                                                  <br>`meta-qcom-qim-product-sdk` |
        | 经过验证的组织的注册开发人员 | 基础版本：High-level OS 和固件（仅限 GPS）源代码<br>`Qualcomm_Linux.SPF.1.0|AP|Standard|OEM|NoModem` | `meta-qcom`<br><br><br>                                                  <br>`meta-qcom-hwe`<br><br><br>                                                  <br>`meta-qcom-extras` |
        | 经过验证的组织的注册开发人员 | 基础版本 + QIMP SDK<br>`Qualcomm_Linux.SPF.1.0|AP|Standard|OEM|NM_QIMPSDK` | `meta-qcom`<br><br><br>                                                  <br>`meta-qcom-hwe`<br><br><br>                                                  <br>`meta-qcom-extras`<br><br><br>                                                  <br>`meta-qcom-qim-product-sdk` |
        | 经过验证的组织的注册开发人员 | 基础版本 + QIMP SDK + QIRP SDK<br>`Qualcomm_Linux.SPF.1.0|AP|Standard|OEM|NM_QIRPSDK` | `meta-qcom`<br><br><br>                                                  <br>`meta-qcom-hwe`<br><br><br>                                                  <br>`meta-qcom-extras`<br><br><br>                                                  <br>`meta-qcom-robotics-extras`<br><br><br>                                                  <br>`meta-ros`<br><br><br>                                                  <br>`meta-qcom-robotics`<br><br><br>                                                  <br>`meta-qcom-robotics-distro`<br><br><br>                                                  <br>`meta-qcom-robotics-sdk`<br><br><br>                                                  <br>`meta-qcom-qim-product-sdk` |
        | 具有额外访问权限的许可开发人员 | 基础版本：High-level OS 和固件（仅限 GPS）源代码<br>`Qualcomm_Linux.SPF.1.0|AP|Standard|OEM|` | `meta-qcom`<br><br><br>                                                  <br>`meta-qcom-hwe`<br><br><br>                                                  <br>`meta-qcom-extras` |
        | 具有额外访问权限的许可开发人员 | 基础版本 + QIMP SDK（仅限 GPS）<br>`Qualcomm_Linux.SPF.1.0|AP|Standard|OEM|QIMPSDK` | `meta-qcom`<br><br><br>                                                  <br>`meta-qcom-hwe`<br><br><br>                                                  <br>`meta-qcom-extras`<br><br><br>                                                  <br>`meta-qcom-qim-product-sdk` |
        | 具有额外访问权限的许可开发人员 | 基础版本：High-level OS 和固件（GPS 和 modem）源代码<br>`Qualcomm_Linux.SPF.1.0|AMSS|Standard|OEM|` | `meta-qcom`<br><br><br>                                                  <br>`meta-qcom-hwe`<br><br><br>                                                  <br>`meta-qcom-extras` |
        | 具有额外访问权限的许可开发人员 | 基础版本 + QIMP SDK（GPS 和 modem）<br>`Qualcomm_Linux.SPF.1.0|AMSS|Standard|OEM|QIMPSDK` | `meta-qcom`<br><br><br>                                                  <br>`meta-qcom-hwe`<br><br><br>                                                  <br>`meta-qcom-extras`<br><br><br>                                                  <br>`meta-qcom-qim-product-sdk` |
        |  |  |  |
        |  |  |  |
        |  |  |  |

有关 Yocto 层的说明，参见[Table :  1. Qualcomm Linux Yocto 层](https://docs.qualcomm.com/doc/80-70014-254Y/topic/build_from_source_qsc_gui_intro.html#concept_n2t_tjn_w1c__Yocto_layer_descriptions)。
- 开始下载：

        # cd to directory where you have 300 GB of free storage space to create your workspaces
        mkdir <WORKSPACE_DIR>
        cd <WORKSPACE_DIR>
        # WORKSPACE_DIR=/local/mnt/workspace/Qworkspace_QIMPSDK
        
        # Example
        qsc-cli download --workspace-path '/local/mnt/workspace/Qworkspace_QIMPSDK' --product 'QCM6490.LE.1.0' --build 'QCM6490.LE.1.0-00218-STD.PROD-1' --distribution 'Qualcomm_Linux.SPF.1.0|TEST|DEVICE|PB_QIMPSDK'Copy to clipboard

当该过程成功完成后，软件产品将位于用户提供的工作区目录中。

Note: 如果正在下载多个发行版，则每个发行版都需要一个新的工作区。

### 编译

下载完成后开始编译：
Note: 根据软件的大小和主机配置，编译可能需要几个小时。

    qsc-cli compile --workspace-path '<absolute_workspace_path>'
     
    # Example
    qsc-cli compile --workspace-path '/local/mnt/workspace/Qworkspace_QIMPSDK'Copy to clipboard

该过程根据需要编译 Qualcomm 固件，并完成对 Qualcomm Linux 的编译。

Note: 如果您看到 BitBake 获取程序错误，重试编译以解决此错误。如果问题仍然存在，参见 [BitBake 获取程序错误](https://docs.qualcomm.com/doc/80-70014-254Y/topic/troubleshoot_sync_build_and_flash.html#troubleshoot_sync_build_and_flash__do_fetch_error)来寻求解决方案。

成功编译 `qcom-wayland` 发行版后，可以在以下路径看到镜像：

    # system.img is present at the following path
    <workspace_path>/DEV/LE.QCLINUX.1.0.r1/build-qcom-wayland/tmp-glibc/deploy/images/qcm6490/qcom-multimedia-image/*Copy to clipboard

成功编译 `qcom-robotics-ros2-humble` (QIRP) 发行版后，可以在以下路径看到 QIRP SDK 编译文件：

    QIRP SDK artifacts: <workspace_path>/DEV/LE.QCROBOTICS.1.0.r1/build-qcom-robotics-ros2-humble/tmp-glibc/deploy/qirpsdk_artifacts/qirp-sdk_<version>.tar.gz
    # system.img is present at the following path
    Robotics image: <workspace_path>/DEV/LE.QCROBOTICS.1.0.r1/build-qcom-robotics-ros2-humble/tmp-glibc/deploy/images/qcm6490/qcom-robotics-full-image/*Copy to clipboard

### 重新编译

如果已经使用 QSC CLI 编译了工作区，需重新编译工作区：

# qsc-cli compile --image '<software_image_name>' --workspace-path '<absolute_workspace_path>'
     
    # Example
    qsc-cli compile --image LE.QCLINUX.1.0.r1 --workspace-path '/local/mnt/workspace/Qworkspace_QIMPSDK'Copy to clipboard

Note: 有关软件镜像名称 (`--image`) 的更多信息，参见[发行说明](https://docs.qualcomm.com/bundle/publicresource/topics/RNO-240626095531/)中的 QSC-CLI 输入参数表。

### 刷写

有关将软件镜像刷入设备的步骤，参见[注册用户刷写镜像](https://docs.qualcomm.com/doc/80-70014-254Y/topic/flash_images.html)章节。

Last Published: Oct 09, 2024

[Previous Topic
使用 QSC Launcher 编译](https://docs.qualcomm.com/bundle/publicresource/80-70014-254Y/topics/build_from_source_qsc_gui_intro.md) [Next Topic
非注册用户的 GitHub 工作流程](https://docs.qualcomm.com/bundle/publicresource/80-70014-254Y/topics/github_workflow_unregistered_users.md)