使用​SDK开发工具包

SDK是预编译工具链设计的交叉编译软件包为特定目标而无需从头编译整个系统.

您可以使用SDK完成的任务:

  • 为特定版本编译自定义软件及同时确保二进制和功能兼容性
  • 为特定版本编译某些软件包的较新版本
  • 使用自定义补丁或不同功能重新编译现有软件包

您无法使用SDK完成的任务:

  • 将其用作交叉编译工具链的插件以编译整个固件.

先决条件

SDK 与 buildroot 系统具有相同的先决条件, 因此请参阅 Build system – Installation 页面以安装所需的软件以在SDK上构建软件包.

Note: 在某些主机上需要安装 ccache 软件.

  • 在没有 sudo 的情况下, 以非特权用户(而不是 root)的身份执行所有操作.
  • 确保构建目录的完整路径中没有空格.

您可以下载预编译号的 SDK 或可以从源代码中自行编译. 从源代码编译只需启用 menuconfig 选项 Build the OpenWrt SDK (CONFIG_SDK). 预编译的 SDK 位于您找到设备固件映像的同一下载文件夹中.

  • development snapshot SDKPlatforms → Supplementary Files → openwrt-sdk-<Platform>_gcc-<version>_musl.Linux-x86_64.tar.xz
  • 21.02.3Platforms → Supplementary Files → openwrt-sdk-<Platform>_gcc-<version>_musl.Linux-x86_64.tar.xz
  • 19.07.10Platforms → Supplementary Files → openwrt-sdk-<Platform>_gcc-<version>_musl.Linux-x86_64.tar.xz

解压 SDK 存档后, 可选择编辑该 feeds.conf.default 文件以添加您的软件 feeds. 默认情况下, 这将包含构建 SDK 时使用的feeds. 您可以添加自己的本地或远程feed, 就像使用 buildroot 一样. 如果您只是重新构建额外的软件, 则根本不需要这样做.

NOTE: 如果要覆盖来自现有feeds的软件, 则必须在包含要覆盖软件feed的行上方编写自定义feed.
例如, 你想制作一个已经在 Packages feed 中发行软件的自定义版本, 这就是你的 feeds.conf.default 的模板 (第一行是你自己的自定义软件 feed)

src-link local /path/to/local/custom/feed
src-git packages https://git.openwrt.org/feed/packages.git
src-git luci https://git.openwrt.org/project/luci.git
src-git routing https://git.openwrt.org/feed/routing.git
src-git telephony https://git.openwrt.org/feed/telephony.git
#src-git video https://github.com/openwrt/video.git
#src-git targets https://github.com/openwrt/targets.git
#src-git oldpackages http://git.openwrt.org/packages.git
#src-link custom /usr/src/openwrt/custom-feed
  • 使用 ./scripts/feeds update -a 命令获取和更新定义软件.
  • 更新定义后, ./scripts/feeds install <packagename> 准备软件及其依赖项.

./scripts/feeds install -a 将再次使所有软件可用, 就像在 buildroot 一样.

在 SDK 的文件夹中打开一个终端, 然后通过运行命令 make menuconfig 打开 SDK 的菜单. SDK menuconfig 系统与 buildroot 相同. 帮助说明位于顶部, 可通过 ? 按键获得帮助.

很可能 想要禁用一些默认设置, 这些设置会构建每个可用的软件. 进入 Global Build Settings 并在子菜单中, 取消选择/排除以下选项:

  • Select all target specific packages by default
  • Select all kernel module packages by default
  • Select all userspace packages by default

仍然在菜单中, 找到要构建的软件并按 “m” 选择它, 这也会选择所有依赖项, 您将在菜单中看到它们都带有 “<M>” 标记. 您也可以选择多个包.

保存配置并退出菜单.

在Makefile就位之后,可以使用常规的构建命令,例如:

  • make package/example/download - 下载源代码的命令是 download
  • make package/example/prepare - 提取源代码、应用补丁并在必要时下载的命令
  • make package/example/compile - 编译example、准备并在必要时下载的命令
  • make package/example/clean - 清理源代码的命令
  • make package/index - 构建存储库索引以使输出目录可用作本地的opkg源的命令

或者,只需运行make来构建所选的所有内容。 您可以通过编写适合您的构建主机的make -j5或类似的命令来加快编译速度。

编译完成后,生成的.ipk文件将放置在您提取SDK的目录中的bin/packages和bin/targets目录中。

This website uses cookies. By using the website, you agree with storing cookies on your computer. Also you acknowledge that you have read and understand our Privacy Policy. If you do not agree leave the website.More information about cookies
  • Last modified: 2023/11/30 09:27
  • by superice