栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

交叉编译qt5.11.3脚本

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

交叉编译qt5.11.3脚本

野火的脚本基础上,修改的脚本

#!/bin/sh

# set -v

PLATFORM=my-linux-arm-qt
script_PATH=$(pwd)

#修改源码包解压后的名称
MAJOR_NAME=qt-everywhere-src

#修改需要下载的源码前缀和后缀
OPENSRC_VER_PREFIX=5.11
OPENSRC_VER_SUFFIX=.3



#添加tslib交叉编译的动态库文件和头文件路径
TSLIB_LIB=/opt/tslib-1.21/lib
TSLIB_INC=/opt/tslib-1.21/include

#添加alsa交叉编译的动态库文件和头文件路径
ALSA_LIB=/opt/alsa-lib-1.2.2/lib
ALSA_INC=/opt/alsa-lib-1.2.2/include

#修改源码包解压后的名称
PACKAGE_NAME=${MAJOR_NAME}-${OPENSRC_VER_PREFIX}${OPENSRC_VER_SUFFIX}

#定义编译后安装--生成的文件,文件夹位置路径
INSTALL_PATH=/opt/${PACKAGE_NAME}

#添加交叉编译工具链路径
# CROSS_CHAIN_PREFIX=/opt/arm-gcc/bin/arm-linux-gnueabihf
# CROSS_CHAIN_PREFIX=/opt/gcc-arm-linux-gnueabihf-8.3.0/bin/arm-linux-gnueabihf
CROSS_CHAIN_PREFIX=/usr/bin/arm-linux-gnueabihf


#定义压缩包名称
COMPRESS_PACKAGE=${PACKAGE_NAME}.tar.xz

#无需修改--自动组合下载地址
OPENSRC_VER=${OPENSRC_VER_PREFIX}${OPENSRC_VER_SUFFIX}

case ${OPENSRC_VER_PREFIX} in
      5.9 | 5.12 | 5.13 | 5.14 |5.15 )
      DOWNLOAD_link=http://download.qt.io/official_releases/qt/${OPENSRC_VER_PREFIX}/${OPENSRC_VER}/single/${COMPRESS_PACKAGE}
      ;;
   *)
      DOWNLOAD_link=http://download.qt.io/new_archive/qt/${OPENSRC_VER_PREFIX}/${OPENSRC_VER}/single/${COMPRESS_PACKAGE}
      ;;
esac

#无需修改--自动组合平台路径
CONFIG_PATH=${script_PATH}/${PACKAGE_NAME}/qtbase/mkspecs/${PLATFORM}

#无需修改--自动组合配置平台路径文件
CONFIG_FILE=${CONFIG_PATH}/qmake.conf

#下载源码包
do_download_src () {
   echo "33[1;33mstart download ${PACKAGE_NAME}...33[0m"

   if [ ! -f "${COMPRESS_PACKAGE}" ];then
      if [ ! -d "${PACKAGE_NAME}" ];then
         wget -c ${DOWNLOAD_link}
      fi
   fi

   echo "33[1;33mdone...33[0m"
}

#解压源码包
do_tar_package () {
   echo "33[1;33mstart unpacking the ${PACKAGE_NAME} package ...33[0m"
   if [ ! -d "${PACKAGE_NAME}" ];then
      tar -xf ${COMPRESS_PACKAGE}
   fi
   echo "33[1;33mdone...33[0m"
   cd ${PACKAGE_NAME}

   # 修复5.11.3 版本的bug
   if [ ${OPENSRC_VER_PREFIX}=="5.11" -a ${OPENSRC_VER_SUFFIX}==".3" ]; then
      sed 's/asm volatile /asm /' -i qtscript/src/3rdparty/javascriptcore/JavascriptCore/jit/JITStubs.cpp
   fi
}

#安装依赖项
do_install_config_dependent () {
   sudo apt install python -y
   sudo apt install g++ make qt3d5-dev-tools -y
   sudo apt install qml-module-qtquick-xmllistmodel -y
   sudo apt install qml-module-qtquick-virtualkeyboard qml-module-qtquick-privatewidgets qml-module-qtquick-dialogs qml -y
   sudo apt install libqt53dquickscene2d5 libqt53dquickrender5 libqt53dquickinput5 libqt53dquickextras5 libqt53dquickanimation5 libqt53dquick5 -y
   sudo apt install qtdeclarative5-dev qml-module-qtwebengine qml-module-qtwebchannel qml-module-qtmultimedia qml-module-qtaudioengine -y
}

#修改配置平台
do_config_before () {
   echo "33[1;33mstart configure platform...33[0m"

   echo ${CONFIG_PATH}
if [ ! -d "${CONFIG_PATH}" ];then
   cp -a ${script_PATH}/${PACKAGE_NAME}/qtbase/mkspecs/linux-arm-gnueabi-g++ ${CONFIG_PATH}
fi

   echo "#" > ${CONFIG_FILE}
   echo "# qmake configuration for building with arm-linux-gnueabi-g++" >> ${CONFIG_FILE}
   echo "#" >> ${CONFIG_FILE}
   echo "" >> ${CONFIG_FILE}
   echo "MAKEFILE_GENERATOR      = UNIX" >> ${CONFIG_FILE}
   echo "ConFIG                 += incremental" >> ${CONFIG_FILE}
   echo "QMAKE_INCREMENTAL_STYLE = sublib" >> ${CONFIG_FILE}
   echo "" >> ${CONFIG_FILE}
   echo "include(../common/linux.conf)" >> ${CONFIG_FILE}
   echo "include(../common/gcc-base-unix.conf)" >> ${CONFIG_FILE}
   echo "include(../common/g++-unix.conf)" >> ${CONFIG_FILE}
   echo "" >> ${CONFIG_FILE}
   echo "# modifications to g++.conf" >> ${CONFIG_FILE}
   echo "QMAKE_CC                = ${CROSS_CHAIN_PREFIX}-gcc -lts" >> ${CONFIG_FILE}
   echo "QMAKE_CXX               = ${CROSS_CHAIN_PREFIX}-g++ -lts" >> ${CONFIG_FILE}
   echo "QMAKE_link              = ${CROSS_CHAIN_PREFIX}-g++ -lts" >> ${CONFIG_FILE}
   echo "QMAKE_link_SHLIB        = ${CROSS_CHAIN_PREFIX}-g++ -lts" >> ${CONFIG_FILE}
   echo "" >> ${CONFIG_FILE}
   echo "# modifications to linux.conf" >> ${CONFIG_FILE}
   echo "QMAKE_AR                = ${CROSS_CHAIN_PREFIX}-ar cqs" >> ${CONFIG_FILE}
   echo "QMAKE_OBJCOPY           = ${CROSS_CHAIN_PREFIX}-objcopy" >> ${CONFIG_FILE}
   echo "QMAKE_NM                = ${CROSS_CHAIN_PREFIX}-nm -P" >> ${CONFIG_FILE}
   echo "QMAKE_STRIP             = ${CROSS_CHAIN_PREFIX}-strip" >> ${CONFIG_FILE}
   echo "load(qt_config)" >> ${CONFIG_FILE}
   echo "" >> ${CONFIG_FILE}
   echo "QMAKE_INCDIR=${TSLIB_INC}" >> ${CONFIG_FILE}
   echo "QMAKE_LIBDIR=${TSLIB_LIB}" >> ${CONFIG_FILE}

   cat ${CONFIG_FILE}
   echo "33[1;33mdone...33[0m"
}

#配置选项
do_configure () {
   echo "33[1;33mstart configure ${PACKAGE_NAME}...33[0m"

   export CC="${CROSS_CHAIN_PREFIX}-gcc"
   export CXX="${CROSS_CHAIN_PREFIX}-g++"

   ./configure 
   -prefix ${INSTALL_PATH} 
   -xplatform ${PLATFORM} 
   -release 
   -opensource 
   -/confirm/i-license 
   -no-opengl 
   -no-xcb 
   -no-eglfs 
   -no-compile-examples 
   -no-pkg-config 
   -no-iconv 
   -no-glib 
   -tslib 
   -I"${TSLIB_INC}" 
   -L"${TSLIB_LIB}" 
   -alsa 
   -I"${ALSA_INC}" 
   -L"${ALSA_LIB}" 
   -openssl 
   -I"/opt/openssl/include" 
   -L"/opt/openssl/lib" 
   -skip qtpurchasing
#   -ssl 
#   -lcrypto
#   -no-openssl 

   echo "33[1;33mdone...33[0m"
}


#编译并且安装
do_make_install () {
   echo "33[1;33mstart make and install ${PACKAGE_NAME} ...33[0m"
   make && make install
   echo "33[1;33mdone...33[0m"
}

#删除下载的文件
do_delete_file () {
   cd ${script_PATH}
   if [ -f "${COMPRESS_PACKAGE}" ];then
      sudo rm -f ${COMPRESS_PACKAGE}
   fi
}

#do_download_src
#do_tar_package
#do_install_config_dependent
#do_config_before
cd ${PACKAGE_NAME}
do_configure
do_make_install
# do_delete_file

exit $?
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/333745.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号