写一个打包qt可执行程序脚本拷贝依赖库 x86和arm架构通用
时间: 2024-03-05 21:50:52 浏览: 149
好的,以下是一个可以打包Qt可执行程序并拷贝依赖库的脚本,同时支持x86和arm架构:
```
#!/bin/bash
# 设置目标平台和架构
ARCH=$1
if [ "$ARCH" != "x86" ] && [ "$ARCH" != "arm" ]; then
echo "Invalid architecture. Please choose x86 or arm."
exit 1
fi
# 设置Qt的路径和版本号
QT_PATH=/opt/Qt/5.15.2
QT_VERSION=5.15.2
# 设置项目名称和路径
PROJECT_NAME=MyApp
PROJECT_DIR=/path/to/project
# 设置编译选项
QMAKE_CXXFLAGS="-fPIC -std=c++11"
QMAKE_LFLAGS="-static-libgcc -static-libstdc++ -Wl,-rpath-link,'$$ORIGIN'"
# 创建构建目录
BUILD_DIR=$PROJECT_DIR/build-$ARCH
if [ ! -d "$BUILD_DIR" ]; then
mkdir "$BUILD_DIR"
fi
# 生成Makefile
cd "$BUILD_DIR"
if [ "$ARCH" = "x86" ]; then
$QT_PATH/$QT_VERSION/gcc_64/bin/qmake "$PROJECT_DIR/$PROJECT_NAME.pro" -spec linux-g++-64
else
$QT_PATH/$QT_VERSION/android_armv7/bin/qmake "$PROJECT_DIR/$PROJECT_NAME.pro" -spec android-g++ "CONFIG+=arm"
fi
# 编译可执行程序
make
if [ $? -ne 0 ]; then
echo "Build failed."
exit 1
fi
# 拷贝依赖库
if [ "$ARCH" = "x86" ]; then
# 拷贝Qt库
cp $QT_PATH/$QT_VERSION/gcc_64/lib/libQt5Core.so.5 $BUILD_DIR
cp $QT_PATH/$QT_VERSION/gcc_64/lib/libQt5Gui.so.5 $BUILD_DIR
cp $QT_PATH/$QT_VERSION/gcc_64/lib/libQt5Widgets.so.5 $BUILD_DIR
cp $QT_PATH/$QT_VERSION/gcc_64/lib/libQt5Network.so.5 $BUILD_DIR
else
# 拷贝Qt库
cp $QT_PATH/$QT_VERSION/android_armv7/lib/libQt5Core.so.5 $BUILD_DIR
cp $QT_PATH/$QT_VERSION/android_armv7/lib/libQt5Gui.so.5 $BUILD_DIR
cp $QT_PATH/$QT_VERSION/android_armv7/lib/libQt5Widgets.so.5 $BUILD_DIR
cp $QT_PATH/$QT_VERSION/android_armv7/lib/libQt5Network.so.5 $BUILD_DIR
# 拷贝Android依赖库
cp $QT_PATH/$QT_VERSION/android_armv7/plugins/platforms/libqtforandroid.so $BUILD_DIR
cp $QT_PATH/$QT_VERSION/android_armv7/plugins/bearer/libqandroidbearer.so $BUILD_DIR
fi
# 拷贝可执行程序
cp "$BUILD_DIR/$PROJECT_NAME" "$PROJECT_DIR"
echo "Build successful."
exit 0
```
在脚本中,您需要设置以下参数:
- ARCH:目标平台和架构,可以选择x86或者arm。
- QT_PATH:Qt的安装路径。
- QT_VERSION:Qt的版本号。
- PROJECT_NAME:项目名称。
- PROJECT_DIR:项目路径。
- QMAKE_CXXFLAGS:编译选项。
- QMAKE_LFLAGS:链接选项。
脚本执行完毕后,可执行程序和依赖库会被拷贝到项目路径下。
阅读全文