86 lines
2.3 KiB
Bash
86 lines
2.3 KiB
Bash
|
#!/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 <<EOF >${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 <you@example.com>
|
|||
|
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"
|