在用HbuilderX5.05(ARM)、XCode 26.4、SDK 5.05.20260324175 (都是最新版本)对uni-app项目进行IOS本地编译时出现了以下错误,请问大家有没有遇到过?是如何解决的?请了解过的热心朋友给与指点,谢谢。
第1个错误:/Users/soft/5.05/SDK/HBuilder-Hello/HBuilder-Hello.xcodeproj Multiple errors: 64-bit mach-o member 'tabinit.o' not 8-byte aligned in '/Users/soft/5.05/SDK/SDK/libs/libmp3lame.a'; 64-bit mach-o member 'NSScanner_Extensions.o' not 8-byte aligned in '/Users/soft/5.05/SDK/SDK/libs/libTouchJSON.a'
第2个错误:/Users/soft/5.05/SDK/HBuilder-Hello/HBuilder-Hello.xcodeproj Linker command failed with exit code 1 (use -v to see invocation)
- 发布:2026-03-26 17:16
- 更新:2026-09-21 14:35
- 阅读:2299
亲测有效,注意需要替换掉 LIBS_DIR,例如楼主就需要设置为 LIBS_DIR="/Users/soft/5.05/SDK/SDK/libs"
#!/bin/bash
# 修复静态库 .o 文件 8 字节对齐问题
# 适用于 Xcode 26 / 新版 ld 要求
set -e
LIBS_DIR="【替换为你的SDK/libs目录绝对路径】"
WORK_DIR="/tmp/fix_alignment_work"
fix_library() {
local LIB_PATH="$1"
local LIB_NAME=$(basename "$LIB_PATH")
echo "=========================================="
echo "正在修复: $LIB_NAME"
echo "=========================================="
# 备份原文件
if [ ! -f "${LIB_PATH}.bak" ]; then
cp "$LIB_PATH" "${LIB_PATH}.bak"
echo "✅ 已备份为 ${LIB_NAME}.bak"
else
echo "⚠️ 备份已存在,跳过备份"
fi
# 获取架构列表
ARCHS=$(xcrun lipo -info "$LIB_PATH" | sed 's/.*are: //' | sed 's/.*is architecture: //')
echo "包含架构: $ARCHS"
# 创建工作目录
rm -rf "$WORK_DIR"
mkdir -p "$WORK_DIR"
local THIN_LIBS=()
for ARCH in $ARCHS; do
echo " 处理架构: $ARCH"
local ARCH_DIR="$WORK_DIR/$ARCH"
mkdir -p "$ARCH_DIR"
# 提取单架构
xcrun lipo "$LIB_PATH" -thin "$ARCH" -output "$ARCH_DIR/thin.a"
# 使用 libtool 重新打包(会修复对齐问题)
cd "$ARCH_DIR"
xcrun ar x thin.a
rm -f thin.a __.SYMDEF "__.SYMDEF SORTED"
# 用 libtool 重新创建静态库
xcrun libtool -static -o "$ARCH_DIR/fixed.a" "$ARCH_DIR"/*.o 2>/dev/null || \
xcrun ar rcs "$ARCH_DIR/fixed.a" "$ARCH_DIR"/*.o
THIN_LIBS+=("$ARCH_DIR/fixed.a")
cd - > /dev/null
done
# 合并所有架构
xcrun lipo -create "${THIN_LIBS[@]}" -output "$LIB_PATH"
echo "✅ $LIB_NAME 修复完成"
echo ""
# 清理
rm -rf "$WORK_DIR"
}
echo "? 开始修复静态库对齐问题..."
echo ""
fix_library "$LIBS_DIR/libmp3lame.a"
fix_library "$LIBS_DIR/libTouchJSON.a"
echo "=========================================="
echo "? 全部修复完成!"
echo "原始文件已备份为 .bak 文件"
echo "请重新编译项目测试"
echo "=========================================="
欢迎到专业群( uni-app 官方技术交流群 1 ) 咨询,群中有相关专业的管理员和群友。
抱歉,我在知识库中没有找到关于 XCode 26.4 本地编译时出现 "64-bit mach-o member not 8-byte aligned" 字节对齐错误的具体解决方案。
根据知识库信息,目前云端打包环境已升级为 XCode 26.3 / iOS SDK 26.2(适用于 HBuilderX 4.41 及以上版本),但针对您遇到的本地编译静态库对齐问题,知识库暂无相关修复记录。
建议您通过以下途径获取帮助:
- 前往 uni-app 官方技术交流群 咨询专业管理员
- 检查本地 SDK 版本是否为最新版(您使用的 5.05 版本可能需要更新)
- 考虑使用云端打包作为临时解决方案(云端环境已适配 XCode 26)
知识库中关于 iOS 打包环境的详细说明可参考:iOS平台云端打包环境
!/bin/bash
Script to test static libraries with Xcode linker and fix ONLY misaligned ones
set -e
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
PROJECT_ROOT="$(cd "$SCRIPT_DIR/.." && pwd)"
LIBS_DIR="$PROJECT_ROOT/SDK/Libs"
WORK_DIR="/tmp/fix_alignment_work"
Helper function to check if Xcode linker raises alignment errors on a library
check_alignment_error() {
local LIB_PATH="$1"
local TEST_DIR="/tmp/ldtest$$"
mkdir -p "$TEST_DIR"
# Create a dummy C file and compile to dummy object
echo "int dummy(void) { return 0; }" > "$TEST_DIR/dummy.c"
xcrun clang -c "$TEST_DIR/dummy.c" -o "$TEST_DIR/dummy.o" -arch arm64 2>/dev/null || true
# Run ld linker in test mode against the library and catch linker warnings
local LD_LOG="$TEST_DIR/ld_output.log"
xcrun ld -r "$TEST_DIR/dummy.o" -force_load "$LIB_PATH" -o "$TEST_DIR/out.o" -arch arm64 2>"$LD_LOG" || true
# Check if log contains alignment warnings
if grep -q "not 8-byte aligned" "$LD_LOG"; then
rm -rf "$TEST_DIR"
return 0 # True: Misaligned
else
rm -rf "$TEST_DIR"
return 1 # False: Properly aligned
fi
}
fix_library() {
local LIB_PATH="$1"
local LIB_NAME=$(basename "$LIB_PATH")
echo " ? Fixing alignment for $LIB_NAME..."
# 1. Backup original
if [ ! -f "${LIB_PATH}.bak" ]; then
cp "$LIB_PATH" "${LIB_PATH}.bak"
echo " (Original backed up to ${LIB_NAME}.bak)"
fi
# 2. Get architecture list
ARCHS=$(xcrun lipo -info "$LIB_PATH" | sed 's/.*are: //' | sed 's/.*is architecture: //')
rm -rf "$WORK_DIR"
mkdir -p "$WORK_DIR"
local THIN_LIBS=()
# 3. Extract and re-archive with libtool
for ARCH in $ARCHS; do
local ARCH_DIR="$WORK_DIR/$ARCH"
mkdir -p "$ARCH_DIR"
xcrun lipo "$LIB_PATH" -thin "$ARCH" -output "$ARCH_DIR/thin.a"
cd "$ARCH_DIR"
xcrun ar x thin.a
rm -f thin.a __.SYMDEF*
xcrun libtool -static -o "$ARCH_DIR/fixed.a" "$ARCH_DIR"/*.o 2>/dev/null || \
xcrun ar rcs "$ARCH_DIR/fixed.a" "$ARCH_DIR"/*.o
THIN_LIBS+=("$ARCH_DIR/fixed.a")
cd - > /dev/null
done
# 4. Merge architectures
xcrun lipo -create "${THIN_LIBS[@]}" -output "$LIB_PATH"
echo " ✅ Fixed successfully: $LIB_NAME"
rm -rf "$WORK_DIR"
}
echo "? Auditing static libraries in $LIBS_DIR..."
echo ""
FIXED_COUNT=0
OK_COUNT=0
for LIB in "$LIBS_DIR"/.a; do
[ -e "$LIB" ] || continue
[[ "$LIB" == .bak ]] && continue
LIB_NAME=$(basename "$LIB")
if check_alignment_error "$LIB"; then
echo "⚠️ [MISALIGNED] $LIB_NAME"
fix_library "$LIB"
((FIXED_COUNT++))
else
echo "✅ [OK] $LIB_NAME"
((OK_COUNT++))
fi
done
echo ""
echo "=========================================="
echo "? Scan complete!"
echo " Fixed: $FIXED_COUNT library(ies)"
echo " Skipped (OK): $OK_COUNT library(ies)"
echo "=========================================="
创跃未来科技
请问解决了 按照这个教程还是报错
2026-03-30 17:40
橘子Jun
回复 创跃未来科技: 可以把报错信息贴一下,我这里是好了
2026-03-31 11:40
创跃未来科技
回复 橘子Jun: 好了 我这里是把这几个包删了 好了
2026-03-31 13:36
xmyyw
回复 橘子Jun: 我也遇到这个问题,能帮我看看吗
/Users/yyw/Desktop/XMABR_OA/jyjoa2.0/jyjoa.xcodeproj Multiple errors: 64-bit mach-o member 'weight_amrwb_lpc.o' not 8-byte aligned in '/Users/yyw/Desktop/XMABR_OA/jyjoa2.0/jyjoa/MVC/Communication/General/Audio/VoiceConvert/opencore-amrwb/libopencore-amrwb.a'; 64-bit mach-o member 'window_tab.o' not 8-byte aligned in '/Users/yyw/Desktop/XMABR_OA/jyjoa2.0/jyjoa/MVC/Communication/General/Audio/VoiceConvert/opencore-amrnb/libopencore-amrnb.a'
2026-04-03 17:02
x***@duopu.cn
很赞,亲测有效!???
2026-04-03 17:14
xmyyw
回复 x***@duopu.cn: 能解决吗
2026-04-03 17:15
橘子Jun
回复 xmyyw: 脚本末尾的两行 fix_library 改成
2026-04-08 14:56
l***@163.com
赞,已解决!!!!
2026-04-14 17:53
1***@163.com
回复 橘子Jun: 脚本一直在转圈
2026-05-08 14:13