mksquash_lzma-3.2 编译调试记录

本文解决了mksquash_lzma-3.2在编译过程中出现的未定义引用错误,通过调整Makefile文件中的LDLIBS设置并确保正确链接zlib库,最终成功完成编译。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

今天在编译mksquash_lzma-3.2的时候出现了如下问题:

/home/test/RT288x_SDK/toolchain/mksquash_lzma-3.2/lzma443/C/7zip/Compress/LZMA_C/libunlzma.a(uncomp.o):在函数‘sqlzma_un’中:
uncomp.c:(.text+0x67):对‘inflateReset’未定义的引用
uncomp.c:(.text+0xa7):对‘inflate’未定义的引用
uncomp.c:(.text+0x1b2):对‘zError’未定义的引用
/home/test/RT288x_SDK/toolchain/mksquash_lzma-3.2/lzma443/C/7zip/Compress/LZMA_C/libunlzma.a(uncomp.o):在函数‘sqlzma_init’中:
uncomp.c:(.text+0x3f0):对‘inflateInit_’未定义的引用
collect2: 错误: ld 返回 1
make[1]: *** [unsquashfs] 错误 1

首先,需要确保安装了zlib库。zlib1g,zlib1g-dbg,zlib1g-dev

其次,打开安装目录下的squashfs3.2-r2/squashfs-tools,找到Makefile文件,找到

LDLIBS += -lz -L${LzmaAlone} -L${LzmaC}
把 -lz 去掉,成:

LDLIBS += -L${LzmaAlone} -L${LzmaC}

然后在找到包含LDLIBS的两行,后边添上 -lz 即可

mksquashfs: LDLIBS += -lpthread -lunlzma_r -llzma_r -lstdc++ -lz
unsquashfs: LDLIBS += -lunlzma -lz


./configure

make

make install

编译成功!
<think>好的,我现在需要帮用户解决如何修改BoardConfig-SPI_NAND-Buildroot-RV1106_Luckfox_Pico_Pro-IPC.mk文件的问题。首先,我得确定用户的需求是什么。这个文件看起来像是Buildroot配置文件,用于Luckfox Pico Pro开发板的SPI NAND版本,可能涉及构建参数、内核配置、文件系统设置等。 用户可能是在进行嵌入式系统开发,需要定制他们的系统镜像,比如调整分区大小、更换内核版本、添加或删除软件包,或者修改启动参数。他们可能遇到了编译错误,或者想要优化系统功能,比如增加存储空间,调整IPC相关的配置等。 接下来,我需要回忆Buildroot的配置结构。通常,这类.mk文件会定义目标设备的硬件配置、编译选项、分区表、内核和uboot的设置,以及需要包含的软件包。用户需要修改的地方可能包括: 1. **硬件相关参数**:比如SPI NAND的型号、分区大小、MTD分区表。 2. **编译选项**:如编译器标志、优化级别。 3. **软件包选择**:添加或删除Buildroot中的软件包,比如IPC需要的库或工具。 4. **内核配置**:比如设备树文件的选择,内核模块的启用或禁用。 5. **文件系统设置**:如rootfs的类型(squashfs、ext4等)、大小。 6. **启动参数**:uboot的环境变量,启动命令行参数。 我需要考虑用户可能的操作步骤。首先,他们应该备份原文件,避免修改导致无法恢复。然后,用文本编辑器打开文件,查找需要修改的变量。例如,查找类似BR2_TARGET_ROOTFS_SQUASHFS_SIZE这样的变量来调整文件系统大小,或者BR2_PACKAGE_开头的选项来管理软件包。 可能用户会遇到的问题包括修改了分区大小但未同步其他相关配置,导致系统无法启动;或者添加了不兼容的软件包,引发编译错误。这时候需要指导用户如何排查错误,比如查看编译日志,检查依赖关系。 另外,用户可能对Buildroot的结构不太熟悉,需要解释常见的配置项和它们的作用。例如,BR2_TARGET_ROOTFS_EXT2_SIZE是定义ext2文件系统的大小,而BR2_PACKAGE_XXX则是控制是否包含某个软件包。 最后,应该提醒用户在修改后运行make clean或重新配置Buildroot以确保更改生效,并重新编译整个系统。同时,建议他们参考Luckfox的官方文档或社区资源,获取针对该板卡的具体配置指导,避免不兼容的修改。</think>以下为修改 `BoardConfig-SPI_NAND-Buildroot-RV1106_Luckfox_Pico_Pro-IPC.mk` 配置文件的详细指南: --- ### 一、配置文件作用 该文件用于控制 Luckfox Pico Pro (RV1106) 开发板的 SPI NAND 版本在 Buildroot 中的构建行为,主要涉及: - **硬件参数**:NAND 闪存分区布局、MTD 设置 - **软件选配**:IPC 功能相关软件包、内核模块 - **系统构建**:文件系统类型、镜像生成规则 - **启动配置**:U-Boot 参数、内核命令行 --- ### 二、关键修改区域 (使用 `Ctrl+F` 搜索以下关键字) #### 1. 存储分区配置 ```makefile # MTD 分区表 (单位:sectors) BOARD_NAND_PART_TABLE = \ 2M(boot),\ 14M(rootfs),\ 1M(backup) ``` - **修改建议**:调整分区大小时需确保总和不超过闪存容量,保留 `boot` 分区最小 2MB #### 2. 文件系统设置 ```makefile # SquashFS 压缩设置 BR2_TARGET_ROOTFS_SQUASHFS_COMPRESSION_XZ = y BR2_TARGET_ROOTFS_SQUASHFS_4K_DEVICE = y ``` - **压缩算法**:可选 `gzip`/`lzma`/`xz` (影响压缩率和解压速度) - **块大小**:4K 对应 NAND 页大小 #### 3. IPC 功能组件 ```makefile # 视频编码支持 BR2_PACKAGE_RV1106_VIDEO_ENCODER = y # AI 加速库 BR2_PACKAGE_RKNN_RV1106 = y ``` - **按需启用**:若不需要 AI 功能可注释 `RKNN` 相关项 #### 4. 内核配置 ```makefile # 设备树文件选择 LINUX_DTS_NAME = rv1106g-luckfox-pico-pro-ipc-nand # 内核模块 BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE = $(BR2_EXTERNAL_LUCKFOX_PATH)/board/linux-nand.config ``` - **设备树**:修改前需确认硬件版本匹配 - **配置文件**:通过 `linux-nand.config` 管理内核功能开关 --- ### 三、典型修改场景 #### 场景1:扩展 rootfs 分区 ```diff - 14M(rootfs), + 24M(rootfs), ``` 同时需修改文件系统生成参数: ```makefile BR2_TARGET_ROOTFS_EXT2_SIZE="256M" # 调整为实际需要的大小 ``` #### 场景2:添加 MQTT 支持 ```makefile # 在文件末尾追加 BR2_PACKAGE_MOSQUITTO = y # MQTT broker BR2_PACKAGE_MOSQUITTO_CLI = y # 命令行工具 ``` --- ### 四、修改验证流程 1. **备份配置**:`cp BoardConfig-XXX.mk BoardConfig-XXX.mk.bak` 2. 执行清理: ```bash make clean make uboot-clean make linux-clean ``` 3. 重新编译: ```bash ./build.sh lunch # 选择对应配置 ./build.sh ``` --- ### 五、注意事项 1. **分区对齐**:确保每个分区起始地址按擦除块大小对齐(通常 128KB) 2. **依赖检查**:新增软件包时需确认其依赖项在 `BR2_PACKAGE_*` 中已启用 3. **版本兼容**:内核模块版本需与内核版本严格匹配 > 建议参考官方文档: > - 《Luckfox Pico Pro Buildroot 开发指南》 > - `buildroot/docs/` 目录下的本地文档
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值