5-Openwrt package Makefile

Openwrt package Makefile

在”Openwrt main Makefile”章节里面有说道主Makefile会通过include package/Makefile调用package下的Makefile,package下的Makefile又会调用调用$(call subdir,package)遍历package子目录下的Makefile。package下的Makefile是源码里面就提供的,不会修改,但package子目录下的Makefile确是我们经常要打交道的,本章节将对其进行说明。

我们随便打开package下面的子目录,通常会发现几样东西:

  • package/$(PKG_NAME)/Makefile [必备]
  • package/$(PKG_NAME)/src/ [可选]
  • package/$(PKG_NAME)/patches/ [可选]
  • package/$(PKG_NAME)/files/ [可选]

src目录、patches目录、files目录都是可选的,src目录存放的是该功能模块的源代码,pactches目录通常包括bug修复和对可执行文件体积的优化,files目录通常是运行脚本包括配置文件等。你也可能看到其它目录,因为只要在Makefile文件中指明,目录名字是可以任取的。

Makefile文件最关键,一般来说它提供了下载、编译、安装这个软件包的步骤。

<
这是没编到badblocks吧rm -rf /home/bba/projects/nvr/repo_reconstruct/torchlight/staging_dir/target-arm-openwrt-linux-uclibcgnueabihf/root-mstar/tmp-libext2fs touch /home/bba/projects/nvr/repo_reconstruct/torchlight/staging_dir/target-arm-openwrt-linux-uclibcgnueabihf/root-mstar/stamp/.libext2fs_installed WARNING: skipping tune2fs -- package not selected WARNING: skipping resize2fs -- package not selected WARNING: skipping badblocks -- package not selected WARNING: skipping dumpe2fs -- package not selected WARNING: skipping e2freefrag -- package not selected WARNING: skipping filefrag -- package not selected WARNING: skipping debugfs -- package not selected WARNING: skipping chattr -- package not selected WARNING: skipping lsattr -- package not selected make[2]: Leaving directory `/home/bba/projects/nvr/repo_reconstruct/tp_package/u_packages/e2fsprogs' make[1]: Leaving directory `/home/bba/projects/nvr/repo_reconstruct/torchlight' rm -rf /home/bba/projects/nvr/repo_reconstruct/torchlight/staging_dir/target-arm-openwrt-linux-uclibcgnueabihf/root-mstar/tmp-libext2fs touch /home/bba/projects/nvr/repo_reconstruct/torchlight/staging_dir/target-arm-openwrt-linux-uclibcgnueabihf/root-mstar/stamp/.libext2fs_installed WARNING: skipping tune2fs -- package not selected WARNING: skipping resize2fs -- package not selected WARNING: skipping badblocks -- package not selected WARNING: skipping dumpe2fs -- package not selected WARNING: skipping e2freefrag -- package not selected WARNING: skipping filefrag -- package not selected WARNING: skipping debugfs -- package not selected WARNING: skipping chattr -- package not selected WARNING: skipping lsattr -- package not selected make[2]: Leaving directory `/home/bba/projects/nvr/repo_reconstruct/tp_package/u_packages/e2fsprogs' make[1]: Leaving directory `/home/bba/projects/nvr/repo_reconstruct/torchlight'
最新发布
07-17
<think>根据用户提供的编译输出,出现了多个警告信息,如“WARNING: skipping badblocks -- package not selected”,这表明在编译过程中badblocks工具没有被选中进行编译。因此,用户的问题是如何在OpenWrt源码编译中确保badblocks被正确编译。 解决方案: 1. 检查e2fsprogs的配置:在OpenWrt中,badblocks是e2fsprogs包的一部分。需要确保在编译配置中已经启用了e2fsprogs,并且选中了badblocks。 2. 通过menuconfig配置:在OpenWrt源码目录下,运行`make menuconfig`,然后导航到`Utilities` -> `Filesystem` -> `e2fsprogs`,确保e2fsprogs被选中(按`y`键选择为内置),然后进入其子菜单,确保`badblocks`被选中。 3. 如果e2fsprogs已经选中,但badblocks没有被选中,则需要进入e2fsprogs的子菜单,选中badblocks(通常有一个选项如“Compile badblocks”)。 4. 重新编译:配置完成后,保存退出,然后重新编译e2fsprogs包: ```bash make package/feeds/packages/e2fsprogs/clean make package/feeds/packages/e2fsprogs/compile V=s ``` 或者,如果e2fsprogs在另一个feed中,请调整路径。根据用户的输出,路径可能是`package/u_packages/e2fsprogs`,所以命令可能是: ```bash make package/u_packages/e2fsprogs/{clean,compile} V=s ``` 5. 如果上述方法无效,可以尝试直接修改e2fsprogs的Makefile,强制编译badblocks。在e2fsprogs的Makefile中,通常有类似如下的配置: ```makefile define Package/e2fsprogs/Default SECTION:=utils CATEGORY:=Utilities TITLE:=Ext2/3/4 filesystem utilities URL:=http://e2fsprogs.sourceforge.net/ SUBMENU:=Filesystem endef define Package/e2fsprogs-badblocks $(call Package/e2fsprogs/Default) TITLE:=badblocks utility for e2fsprogs DEPENDS:=+e2fsprogs endef define Package/e2fsprogs-badblocks/install $(INSTALL_DIR) $(1)/usr/sbin $(INSTALL_BIN) $(PKG_BUILD_DIR)/misc/badblocks $(1)/usr/sbin/ endef ``` 确保在Makefile中有类似上面定义e2fsprogs-badblocks的部分,并且该包被选中(在menuconfig中会出现)。如果没有,需要添加并确保在编译配置中选中。 6. 如果用户只需要badblocks,而不需要整个e2fsprogs,可以单独编译badblocks。但是,在OpenWrt中,通常badblocks是作为e2fsprogs的一个子包存在的。因此,确保在menuconfig中选中了`e2fsprogs-badblocks`(或类似名称的包)。 7. 编译完成后,在编译输出目录(通常是`bin/packages/`下的相应架构目录)中找到生成的ipk包,其中包含badblocks。或者,可以直接从编译目录中提取badblocks二进制文件,路径为`build_dir/target-*/e2fsprogs-*/misc/badblocks`。 8. 如果用户希望生成静态链接的badblocks,可以在e2fsprogs的Makefile中的配置参数中添加`--enable-static`,如: ```makefile CONFIGURE_ARGS += --enable-static ``` 然后重新编译。 由于用户之前编译时出现了“skipping badblocks”的警告,所以重点在于确保badblocks在配置中被选中。 注意:用户提供的编译命令中使用了`PR_NAME=2016pv2`,这可能是一个特定的环境变量或目标,请确保在menuconfig中配置时也选择了正确的目标(Target System和Target Profile)。 根据用户提供的编译输出路径,用户的OpenWrt源码路径为`/home/bba/projects/nvr/repo_reconstruct/torchlight`,因此menuconfig命令应在该目录下执行。 步骤总结: - 进入OpenWrt源码目录(/home/bba/projects/nvr/repo_reconstruct/torchlight) - 运行`make menuconfig` - 确保在Utilities -> Filesystem -> e2fsprogs中选中badblocks - 保存配置,然后重新编译e2fsprogs包 如果问题依旧,可能需要检查编译日志,查看为何badblocks被跳过。 现在,根据用户的问题和上述回答,提出相关问题。</think>根据您提供的编译输出,出现"WARNING: skipping badblocks -- package not selected"警告,表明在编译过程中badblocks工具未被正确包含。以下是解决方案: ### 解决方案步骤 1. **启用badblocks编译选项** 在OpenWrt的`make menuconfig`中启用badblocks: ```bash cd /home/bba/projects/nvr/repo_reconstruct/torchlight make menuconfig ``` - 导航路径:`Utilities → Filesystem → e2fsprogs` - 选中`< > badblocks`(按空格键标记为`<*> badblocks`) - 保存配置后退出 2. **强制重新编译e2fsprogs** ```bash make package/u_packages/e2fsprogs/{clean,compile} V=s ``` 或完整编译: ```bash make PR_NAME=2016pv2 package/u_packages/e2fsprogs/{clean,compile} V=s ``` 3. **验证编译结果** 编译成功后,二进制文件将出现在: ```bash build_dir/target-*/e2fsprogs-*/misc/badblocks ``` 使用`file badblocks`确认文件类型(应为ARM ELF) ### 关键问题分析 1. **包未选择**:日志显示多个工具被跳过,说明menuconfig中未启用这些子组件 2. **路径问题**:您的编译路径为`package/u_packages/e2fsprogs`而非标准路径,需保持路径一致 3. **依赖处理**:确保`libext2fs`已正确安装(日志显示其安装完成) ### 备选方案 若仍失败,可直接从e2fsprogs官网编译: ```bash wget https://mirrors.edge.kernel.org/pub/linux/kernel/people/tytso/e2fsprogs/v1.47.0/e2fsprogs-1.47.0.tar.gz tar zxvf e2fsprogs-*.tar.gz cd e2fsprogs-*/ ./configure --host=arm-openwrt-linux-uclibcgnueabihf make # 生成的二进制在 misc/badblocks ```
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Creator_Ly

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值