#!/bin/bash set -e # 定义项目名称和版本等信息 PROJECT_NAME="_EMS_C_V1.0.0" VERSION="1.0.0" ARCHITECTURE="arm64" # 指定目标架构(飞凌) DB_PATH="/opt/company_ems/db/sqlite3.db" # 数据库路径 DEB_PACKAGE_NAME="${PROJECT_NAME}_${VERSION}_${ARCHITECTURE}.deb" DEB_OUTPUT_PATH="/opt/${DEB_PACKAGE_NAME}" # 返回到项目根目录 cd "$(dirname "$0")/.." # 创建并进入构建目录 mkdir -p build && cd build # 清除 build 目录下的所有文件 rm -rf * # 配置CMake以使用交叉编译 cmake .. # 编译项目 make -j$(nproc) # 确保可执行文件存在 if [[ ! -f "_EMS_C_V1.0.0" ]]; then echo "可执行文件未找到: _EMS_C_V1.0.0" exit 1 fi # 准备.deb包目录结构 DEB_BUILD_DIR="/opt/${PROJECT_NAME}_${VERSION}_${ARCHITECTURE}_deb" # 修改为/opt目录 mkdir -p ${DEB_BUILD_DIR}/DEBIAN mkdir -p ${DEB_BUILD_DIR}/company_ems/bin mkdir -p ${DEB_BUILD_DIR}/company_ems/db # mkdir -p ${DEB_BUILD_DIR}/usr/lib # 创建/usr/lib目录 # 创建目标目录(如果不存在) sudo mkdir -p /opt/company_ems/bin/ # 拷贝可执行文件和其他库文件 cp _EMS_C_V1.0.0 "${DEB_BUILD_DIR}/company_ems/bin/" # sudo cp -r ./lib/* /usr/lib/ # 拷贝lib下的文件 # sudo ldconfig # 更新库缓存 # 创建小写版本的可执行文件副本 cp "${DEB_BUILD_DIR}/company_ems/bin/_EMS_C_V1.0.0" "${DEB_BUILD_DIR}/company_ems/bin/company_ems_c_v1.0.0" # 删除大写版本的可执行文件 rm "${DEB_BUILD_DIR}/company_ems/bin/_EMS_C_V1.0.0" # 复制数据库到预定位置 cp "${DB_PATH}" "${DEB_BUILD_DIR}/company_ems/db/" # 创建控制文件 cat <${DEB_BUILD_DIR}/DEBIAN/control Package: company-ems Version: ${VERSION} Section: base Priority: optional Architecture: ${ARCHITECTURE} Depends: libc6, libsqlite3-0, libxml2, libssl1.1 Maintainer: Your Name Description: EMS C Project for ARM This package is designed for ARM architecture. EOF # 删除之前同名的.deb包(如果存在) if [[ -f "${DEB_OUTPUT_PATH}" ]]; then echo "删除之前的deb包: ${DEB_OUTPUT_PATH}" rm "${DEB_OUTPUT_PATH}" fi # 构建.deb包 dpkg-deb --build ${DEB_BUILD_DIR} # 移动到指定位置 mv "${DEB_BUILD_DIR}.deb" "${DEB_OUTPUT_PATH}" # 清理 rm -rf ${DEB_BUILD_DIR} cd .. echo "Deb包构建完成:${PROJECT_NAME}_${VERSION}_${ARCHITECTURE}.deb"