Show pageOld revisionsBacklinksBack to top This page is read only. You can view the source, but not change it. Ask your administrator if you think this is wrong. ====== 使用SDK开发工具包====== 该[[wp>Software_development_kit|SDK]]是预编译[[wp>Toolchain|工具链]]设计的[[wp>Cross_compile|交叉编译]]软件包为特定目标而无需从头编译整个系统. 您可以使用SDK完成的任务: * 为特定版本编译自定义软件及同时确保二进制和功能兼容性 * 为特定版本编译某些软件包的较新版本 * 使用自定义补丁或不同功能重新编译现有软件包 您无法使用SDK完成的任务: * 将其用作交叉编译工具链的插件以编译整个固件. === 先决条件 === SDK 与 buildroot 系统具有相同的先决条件, 因此请参阅 [[docs:guide-developer:toolchain:install-buildsystem|Build system – Installation]] 页面以安装所需的软件以在SDK上构建软件包. Note: 在某些主机上需要安装 ''ccache'' 软件. <WRAP important> * 在没有 sudo 的情况下, 以非特权用户(而不是 root)的身份执行所有操作. * 确保构建目录的完整路径中没有空格. </WRAP> ===== 获取SDK ===== 您可以下载预编译号的 SDK 或可以从源代码中自行编译. 从源代码编译只需启用 menuconfig 选项 ''Build the OpenWrt SDK'' (CONFIG_SDK). 预编译的 SDK 位于您找到设备固件映像的同一下载文件夹中. ==== 下载 ==== * [[https://downloads.openwrt.org/snapshots/targets/| development snapshot SDK]] -> [[docs:platforms:start|Platforms]] -> Supplementary Files -> openwrt-sdk-<Platform>_gcc-<version>_musl.Linux-x86_64.tar.xz * [[https://downloads.openwrt.org/releases/21.02.3/targets/| 21.02.3]] -> [[docs:platforms:start|Platforms]] -> Supplementary Files -> openwrt-sdk-<Platform>_gcc-<version>_musl.Linux-x86_64.tar.xz * [[https://downloads.openwrt.org/releases/19.07.10/targets/| 19.07.10]] -> [[docs:platforms:start|Platforms]] -> Supplementary Files -> openwrt-sdk-<Platform>_gcc-<version>_musl.Linux-x86_64.tar.xz ==== 软件 feeds ==== 解压 SDK 存档后, 可选择编辑该 ''feeds.conf.default'' 文件以添加您的软件 feeds. 默认情况下, 这将包含构建 SDK 时使用的feeds. 您可以添加自己的本地或远程feed, 就像使用 buildroot 一样. 如果您只是重新构建额外的软件, 则根本不需要这样做. NOTE: 如果要覆盖来自现有feeds的软件, 则必须在包含要覆盖软件feed的行上方编写自定义feed.\\ 例如, 你想制作一个已经在 Packages feed 中发行软件的自定义版本, 这就是你的 **feeds.conf.default** 的模板 (第一行是你自己的自定义软件 feed) <code bash> 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 </code> ==== 加载软件列表 ==== * 使用 ''./scripts/feeds update -a'' 命令获取和更新定义软件. * 更新定义后, ''./scripts/feeds install <packagename>'' 准备软件及其依赖项. ''./scripts/feeds install -a'' 将再次使所有软件可用, 就像在 buildroot 一样. ===== 用法 ===== ==== 选择 packages ==== 在 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目录中。 Last modified: 2023/11/30 09:27by superice