iOS开发 - Warning: Multiple build commands for output file

本文解决Objective-C代码中出现的多个资源文件重复引用的问题,通过两种方法进行解决:一是直接从Copy Bundle Resources阶段移除重复的文件;二是删除重复文件并将其移动到废纸篓中。


Warning: Multiple build commands for output file


该问题是由外部文件的重复引用造成的,解决方法为:


方法一:

前往 Targets -> Build Phases -> Copy Bundle Resources 

将重复引用的文件从列表中移除。


方法二:

前往 Targets -> Build Phases -> Copy Bundle Resources 

右键点击 列表中重复的文件 -> Reveal In Project Navigator -> 右键点击跳转到的文件 -> Delete -> Move to Trash






vendor/amlogic/frameworks/av/LibPlayer/amffmpeg/libavcodec/Makefile:725: warning: overriding commands for target `pcm_tables.h' vendor/amlogic/frameworks/av/LibPlayer/amffmpeg/libavcodec/Makefile:725: warning: ignoring old commands for target `pcm_tables.h' vendor/amlogic/frameworks/av/LibPlayer/amffmpeg/libavcodec/Makefile:725: warning: overriding commands for target `qdm2_tables.h' vendor/amlogic/frameworks/av/LibPlayer/amffmpeg/libavcodec/Makefile:725: warning: ignoring old commands for target `qdm2_tables.h' build/core/Makefile:34: warning: overriding commands for target `out/target/product/p201/system/lib/hw/audio.huitong.default.so' build/core/base_rules.mk:319: warning: ignoring old commands for target `out/target/product/p201/system/lib/hw/audio.huitong.default.so' build/core/Makefile:34: warning: overriding commands for target `out/target/product/p201/system/bin/remotecfg' build/core/base_rules.mk:319: warning: ignoring old commands for target `out/target/product/p201/system/bin/remotecfg' build/core/Makefile:34: warning: overriding commands for target `out/target/product/p201/system/usr/keylayout/Generic.kl' build/core/Makefile:34: warning: ignoring old commands for target `out/target/product/p201/system/usr/keylayout/Generic.kl' build/core/Makefile:34: warning: overriding commands for target `out/target/product/p201/system/lib/libfbaudio.so' build/core/base_rules.mk:319: warning: ignoring old commands for target `out/target/product/p201/system/lib/libfbaudio.so' Starting build with ninja ninja: Entering directory `.' ninja: error: unknown target 'menuconfig' build/core/ninja.mk:148: recipe for target 'ninja_wrapper' failed make: *** [ninja_wrapper] Error 1 #### make failed to build some targets (39 seconds) #### chen@ubuntu1804-desktop:~/data/S905L$ 配置设备参数是报错怎么解决
最新发布
06-06
<think>嗯,用户这次的问题是关于解决在Amlinux(Amlogic)编译环境中出现的'ninja:error:unknowntarget'menuconfig''错误。结合对话历史,用户之前已经source了build/envsetup.sh准备编译Amlogic设备,现在想配置参数但遇到了构建系统识别不了menuconfig目标的问题。用户可能正在为某个Amlogic芯片的电视盒子或开发板定制系统,这类需求常见于嵌入式开发或固件移植场景。ta明显已经搭建好了基础编译环境(能看到成功加载了gxbb/gxl/gxm等Amlogic常见平台的vendorsetup.sh),但卡在了配置阶段。从技术熟练度看,用户应该有一定嵌入式开发基础,但对Amlogic特定编译流程可能还不熟悉。需要特别注意两点技术细节:首先AmlogicAndroid/LinuxSDK通常使用kconfig+make的组合,但部分新版本可能改用ninja;其次用户错误消息明确提到ninja不识别的目标,这很可能是构建系统类型不匹配的典型表现。回顾历史记录,用户环境里同时存在make和ninja的调用痕迹(envsetup.sh里有bash_completion/adb.bash,说明是Android编译体系),所以重点应该放在构建系统切换机制上。解决方案上,最直接的思路是确认当前构建引擎。用户手册中提到Amlinux默认支持makemenuconfig,但需要确保没有误设USE_NINJA=false之类的环境变量。如果用户之前尝试过ninja编译,残留的build.ninja文件也可能干扰判断。另外观察到用户提供的错误信息里提到"AMLINUXamlogicbuild",而Amlinux内核配置确实要用makeARCH=arm64menuconfig,这点需要特别强调。关于兼容性处理,部分Amlogic旧版SDK(如S905L)要求指定ARCH和CROSS_COMPILE,新版本则可能集成在lunch选择的combo里。如果用户选择的是aosp_arm64-eng这类Android目标,menuconfig就必须用makemenuconfig/mkamenuconfig的封装命令——这个细节在Amlogic文档里常被忽略,但恰恰是导致ninja报错的关键。最后生成的扩展问题是有针对性的:第一个问题针对环境变量检查(常见的USE_NINJA设置失误),第二个涉及核心工具链路径(用户可能修改过环境变量),第三个则关联到Amlogic特有的设备树配置参数(如meson系列芯片的DDR时序调整)。这些都与用户当前操作阶段强相关。</think> 在 Amlogic (AMLINUX) 编译环境中遇到 `ninja: error: unknown target 'menuconfig'` 错误,是因为 **Amlogic 的构建系统未直接集成 `make menuconfig` 命令**。以下是完整解决方案: --- ### 解决方法 #### 步骤 1:确认构建系统类型 检查当前环境使用的构建工具: ```bash echo $USE_NINJA # 输出空值或 "false" 表示使用 Make ``` - 若输出 `false` 或为空 → 使用 **Make** 系统 - 若输出 `true` → 使用 **Ninja** 系统(需特殊处理) #### 步骤 2:正确调用配置命令 根据构建工具选择对应命令: 1. **Make 系统**(推荐): ```bash make config # 交互式文本配置 make menuconfig # 仅当环境包含 ncurses 库时可用 ``` > ✅ 适用于大多数 Amlogic SDK (如 S905/S912 平台) 2. **Ninja 系统**: ```bash mka config # 通过包装脚本调用 mka menuconfig # 依赖 ncurses ``` > ⚠️ 若仍报错,手动指定工具链: > `make ARCH=arm64 menuconfig` > 参数说明: > - `ARCH=arm64`: Amlogic S905/S912 等芯片为 ARMv8 架构 #### 步骤 3:验证工具链支持 安装 ncurses 库(启用图形化配置必需): ```bash sudo apt-get install libncurses5-dev # Ubuntu/Debian ``` #### 步骤 4:指定目标设备配置 针对特定设备(如 `p212`)生成默认配置: ```bash make p212_defconfig # 生成 .config 文件 make menuconfig # 基于此配置修改 ``` --- ### 关键原理 1. **Amlogic 构建流程**: ```mermaid graph LR A[source build/envsetup.sh] --> B[lunch <device>] B --> C[make config] --> D[修改配置] D --> E[make -j$(nproc)] ``` 2. **常见错误原因**: - 未正确执行 `lunch` 选择设备目标 - 未安装 ncurses 库导致 `menuconfig` 不可用 - 在 Ninja 环境中直接调用 `make` --- ### 完整操作示例 ```bash # 1. 初始化环境 cd ~/aml-sdk/ source build/envsetup.sh # 2. 选择目标设备 (示例: p212) lunch aml_p212-userdebug # 3. 生成配置并编辑 make p212_defconfig make ARCH=arm64 menuconfig # 修改参数 # 4. 开始编译 make -j$(nproc) ``` > 📌 **提示**:编译完成后固件路径: > `out/target/product/p212/aml_upgrade_package.img` --- ### 相关问题 1. **如何确认当前 Amlogic 芯片的 `ARCH` 类型?** (如 S905L 对应 `arm64`,S805 对应 `arm`)[^1] 2. **编译时报错 `ncurses.h not found` 如何解决?** (需安装 `libncurses-dev` 库) 3. **如何永久保存修改后的配置?** (保存到 `device/amlogic/p212/BoardConfig.mk`) 4. **设备树文件 (DTS) 的位置在哪里?** (路径示例: `kernel/arch/arm64/boot/dts/amlogic/`) [^1]: Amlogic 芯片架构查询需参考芯片手册
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值