Open 1715173329 opened 1 year ago
SDK 集成了完整构建系统以及预编译工具链,旨在为特定目标交叉编译软件包,而无需从头开始构建整个 ImmortalWrt。
SDK 可以做的事:
SDK 不能做的事:
要使用 SDK,需要预先安装对应的依赖,请参阅 Build system setup。
对于 Debian 系发行版,您可以执行以下命令完成最基础的依赖安装:
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:
sudo yay -S openwrt-devel
[!IMPORTANT] 上述软件包只包括使用 SDK 所必须的依赖。部分软件包可能需要额外安装依赖,请善用搜索引擎。
您可以下载由 ImmortalWrt 项目提供的预编译 SDK,也可以自行从源码构建,在 buildroot 中启用 CONFIG_SDK 即可。预编译 SDK 与固件映像位于同一文件夹中。
CONFIG_SDK
如需下载 ImmortalWrt 提供的预编译 SDK,可通过以下方法确定路径:
概览
状态
目标平台
固件版本
x86/64
ImmortalWrt 21.02.6
immortalwrt-sdk[-<version>]-<platform>_gcc-<gcc_version>_musl.Linux-<sdk_arch>.tar.xz
immortalwrt-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。 [!NOTE] ImmortalWrt 目前拥有多个镜像站,您可以从最快的镜像中下载: https://downloads.immortalwrt.org/acknowledgements.html
[!WARNING] ImmortalWrt 项目所提供的预编译 SDK 仅供 x86_64 / AMD64 平台使用,其他架构则需要自行构建。
[!NOTE] 在稳定发布版本中,SDK 所包含的源码会被固定版本,因此无法收到当前分支最新的更新。 您可以从当前分支的快照版本中获取 SDK,如 releases/21.02-SNAPSHOT/targets/x86/64 或 sdk:x86-64-21.02-SNAPSHOT。
[!NOTE] ImmortalWrt 目前拥有多个镜像站,您可以从最快的镜像中下载: https://downloads.immortalwrt.org/acknowledgements.html
[!WARNING] 以下所有操作必须以非特权用户(non-root)身份执行。
解压或 pull SDK 后,可按需修改 feeds.conf.default,增加自己需要的第三方软件源,如:
feeds.conf.default
src-link local_feed /path/to/local/custom/feed src-git remote_feed <repo url>[;<branch>]
[!IMPORTANT] 如需覆盖 ImmortalWrt 中已有的软件包,请确保将您自己的源放置在默认源上方。 或者,您也可以直接将软件包放置在 package/ 路径下。
package/
更新软件源,刷新软件包列表
./scripts/feeds update -a
安装需要编译的软件包
./scripts/feeds install <package name>
install 参数说明:
-a
-p
-p <feed name>
-d <m/n>
-f
[!NOTE] 可以使用命令 ./scripts/feeds list 查看所有可用软件包及其描述
./scripts/feeds list
更新 buildroot 配置
运行命令 make menuconfig 或 make nconfig,配置自己需要的软件包。
make menuconfig
make nconfig
[!NOTE] 默认情况下,buildroot 会选中所有软件包,您可以在首次配置时进入 Global build settings 取消选中。
Global build settings
由于默认情况下 SDK 会选中所有软件包,在未经额外配置的情况下,不建议直接使用 make 进行全量编译。 在编译时,您可以指定需要编译的软件包,如:
make
make package/path/to/package/compile V=s
buildroot 会自动寻找软件包所在目录,所以也可以简化为:
make package/<pkg folder name>/compile V=s
编译完毕后,可以在 bin/packages 及 bin/targets/<platform>/packages 目录下找到编译好的 .ipk 文件。 可以通过 LuCI 系统 -> 软件包 -> 上传软件包 进行安装。
bin/packages
bin/targets/<platform>/packages
.ipk
系统
软件包
上传软件包
什么是 SDK
SDK 集成了完整构建系统以及预编译工具链,旨在为特定目标交叉编译软件包,而无需从头开始构建整个 ImmortalWrt。
SDK 可以做的事:
SDK 不能做的事:
依赖要求
要使用 SDK,需要预先安装对应的依赖,请参阅 Build system setup。
对于 Debian 系发行版,您可以执行以下命令完成最基础的依赖安装:
对于 Arch Linux 系发行版,可以安装 metapackage openwrt-devel:
获取 SDK
您可以下载由 ImmortalWrt 项目提供的预编译 SDK,也可以自行从源码构建,在 buildroot 中启用
CONFIG_SDK
即可。预编译 SDK 与固件映像位于同一文件夹中。如需下载 ImmortalWrt 提供的预编译 SDK,可通过以下方法确定路径:
概览
->状态
中找到目标平台
以及固件版本
x86/64
,固件版本为ImmortalWrt 21.02.6
,则对应 SDK 目录为: releases/21.02.6/targets/x86/64immortalwrt-sdk[-<version>]-<platform>_gcc-<gcc_version>_musl.Linux-<sdk_arch>.tar.xz
如immortalwrt-sdk-21.02.6-x86-64_gcc-8.4.0_musl.Linux-x86_64.tar.xz
如果使用 docker,可以直接 pull 我们提供的镜像:
您可以在 此处 获取所有可用 tags。
使用 SDK
初始化 SDK
解压或 pull SDK 后,可按需修改
feeds.conf.default
,增加自己需要的第三方软件源,如:更新软件源,刷新软件包列表
安装需要编译的软件包
install 参数说明:
-a
:安装软件源中的所有软件包;如果指定了-p
,则安装特定软件源中的所有软件包-p <feed name>
:优先从此软件源中安装包-d <m/n>
:为安装的软件包设置默认状态(m:选中,n:未选中)-f
:如果目前已经安装了同名软件包,则强制覆盖更新 buildroot 配置
运行命令
make menuconfig
或make nconfig
,配置自己需要的软件包。编译软件包
由于默认情况下 SDK 会选中所有软件包,在未经额外配置的情况下,不建议直接使用
make
进行全量编译。 在编译时,您可以指定需要编译的软件包,如:buildroot 会自动寻找软件包所在目录,所以也可以简化为:
编译完毕后,可以在
bin/packages
及bin/targets/<platform>/packages
目录下找到编译好的.ipk
文件。 可以通过 LuCI系统
->软件包
->上传软件包
进行安装。参考