#!/bin/bash TOOLCHAIN="aarch64-linux-gnu-objcopy" if [ -n "$1" ]; then QTUI_PATH="$1" else SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)" QTUI_PATH="${SCRIPT_DIR}/QtUI" fi if [ ! -f "$QTUI_PATH" ]; then echo "错误: 找不到 QtUI 文件: $QTUI_PATH" echo "用法: $0 [QtUI路径]" exit 1 fi if ! command -v "$TOOLCHAIN" &> /dev/null; then echo "错误: 找不到工具链 $TOOLCHAIN" exit 1 fi QTUI_DIR="$(dirname "$QTUI_PATH")" QTUI_NAME="$(basename "$QTUI_PATH")" QTUI_DBG="${QTUI_DIR}/${QTUI_NAME}.dbg" echo "目标文件: $QTUI_PATH" echo "" echo "步骤 1/3: 分离调试符号..." $TOOLCHAIN --only-keep-debug "$QTUI_PATH" "$QTUI_DBG" if [ $? -ne 0 ]; then echo "错误: 分离调试符号失败" exit 1 fi echo "完成: $QTUI_DBG" echo "步骤 2/3: 移除调试符号..." $TOOLCHAIN --strip-debug "$QTUI_PATH" "$QTUI_PATH" if [ $? -ne 0 ]; then echo "错误: 移除调试符号失败" exit 1 fi echo "完成" echo "步骤 3/3: 关联调试符号文件..." $TOOLCHAIN --add-gnu-debuglink="$QTUI_DBG" "$QTUI_PATH" if [ $? -ne 0 ]; then echo "错误: 关联调试符号文件失败" exit 1 fi echo "完成" echo "" echo "========== 结果 ==========" ls -lh "$QTUI_PATH" "$QTUI_DBG" echo "" echo "操作完成:" echo " 发行程序: $QTUI_PATH" echo " 调试符号: $QTUI_DBG" echo " 注意: 两个文件已关联,必须成对存放"