ImmortalWrt SDK 使用说明

什么是 SDK

SDK 集成了完整构建系统以及预编译工具链,旨在为特定目标交叉编译软件包,而无需从头开始构建整个 ImmortalWrt。

SDK 可以做的事:

  • 编译第三方软件包,确保与当前系统标准库兼容
  • 编译某些软件包的新版本
  • 为某些软件包添加自定义补丁或功能

SDK 不能做的事:

  • 构建固件映像
  • 编译内核模块

依赖要求

要使用 SDK,需要预先安装对应的依赖,请参阅 Build system setup

  • 对于 Debian 系发行版,您可以执行以下命令完成最基础的依赖安装:

    1
    2
    3
    4
    5
    
    sudo apt-get install -y build-essential ccache clang curl file \
      g++-multilib gawk gcc-multilib gettext git libdw-dev \
      libelf-dev libncurses5-dev locales pv pwgen python \
      python3 python3-pip qemu-utils rsync signify-openbsd \
      subversion sudo swig unzip wget zlib1g-dev
    
  • 对于 Arch Linux 系发行版,可以安装 metapackage openwrt-devel

    1
    
    sudo yay -S openwrt-devel
    
Note

上述软件包只包括使用 SDK 所必须的依赖。部分软件包可能需要额外安装依赖,请善用搜索引擎。


获取 SDK

您可以下载由 ImmortalWrt 项目提供的预编译 SDK,也可以自行从源码构建,在 buildroot 中启用 CONFIG_SDK 即可。预编译 SDK 与固件映像位于同一文件夹中。

如需下载 ImmortalWrt 提供的预编译 SDK,可通过以下方法确定路径:

  1. 登录 LuCI 后台,在 概览 -> 状态 中找到 目标平台 以及 固件版本
  2. 以 x86/64 为例,目标平台为 x86/64,固件版本为 ImmortalWrt 21.02.6,则对应 SDK 目录为: releases/21.02.6/targets/x86/64
  3. SDK 统一命名为 immortalwrt-sdk[-<version>]-<platform>_gcc-<gcc_version>_musl.Linux-<sdk_arch>.tar.xzimmortalwrt-sdk-21.02.6-x86-64_gcc-8.4.0_musl.Linux-x86_64.tar.xz
  • 如果使用 docker,可以直接 pull 我们提供的镜像:

    docker run –rm -it immortalwrt/sdk:x86-64-openwrt-21.02.6

    您可以在 此处 获取所有可用 tags。

Warning

ImmortalWrt 项目所提供的预编译 SDK 仅供 x86_64 / AMD64 平台使用,其他架构则需要自行构建。

Note

在稳定发布版本中,SDK 所包含的源码会被固定版本,因此无法收到当前分支最新的更新。
您可以从当前分支的快照版本中获取 SDK,如 releases/21.02-SNAPSHOT/targets/x86/64 或 sdk:x86-64-21.02-SNAPSHOT

Tip

ImmortalWrt 目前拥有多个镜像站,您可以从最快的镜像中下载:
https://downloads.immortalwrt.org/acknowledgements.html

使用 SDK

Warning

以下所有操作必须以非特权用户(non-root)身份执行。

初始化 SDK

  • 解压或 pull SDK 后,可按需修改 feeds.conf.default,增加自己需要的第三方软件源,如:

    src-link local_feed /path/to/local/custom/feed
    src-git remote_feed <repo url>[;<branch>]
    
    Note

    如需覆盖 ImmortalWrt 中已有的软件包,请确保将您自己的源放置在默认源上方。
    或者,您也可以直接将软件包放置在 package/ 路径下。

  • 更新软件源,刷新软件包列表

    1
    
    ./scripts/feeds update -a
    
  • 安装需要编译的软件包

    1
    
    ./scripts/feeds install <package name>
    

    install 参数说明:

    • -a:安装软件源中的所有软件包;如果指定了 -p,则安装特定软件源中的所有软件包
    • -p <feed name>:优先从此软件源中安装包
    • -d <m/n>:为安装的软件包设置默认状态(m:选中,n:未选中)
    • -f:如果目前已经安装了同名软件包,则强制覆盖
    Tip

    可以使用命令 ./scripts/feeds list 查看所有可用软件包及其描述

  • 更新 buildroot 配置

    运行命令 make menuconfigmake nconfig,配置自己需要的软件包。

    Note

    默认情况下,buildroot 会选中所有软件包,您可以在首次配置时进入 Global build settings 取消选中。

编译软件包

由于默认情况下 SDK 会选中所有软件包,在未经额外配置的情况下,不建议直接使用 make 进行全量编译。 在编译时,您可以指定需要编译的软件包,如:

make package/path/to/package/compile V=s

buildroot 会自动寻找软件包所在目录,所以也可以简化为:

make package/<pkg folder name>/compile V=s

编译完毕后,可以在 bin/packagesbin/targets/<platform>/packages 目录下找到编译好的 .ipk 文件。 可以通过 LuCI 系统 -> 软件包 -> 上传软件包 进行安装。


参考

Licensed under CC BY-NC-SA 4.0
Last updated on 2025-08-04 16:15:10 +0800
Built with Hugo
Theme Stack designed by Jimmy