麒麟操作系统+龙心 编译qt-arm
收集网址:
https://blog.csdn.net/u012020854/article/details/107104441/
https://blog.csdn.net/weixin_39864453/article/details/112702456
参考二
https://www.bilibili.com/read/cv12524130/
下面是qt编译的时候配置参数:
./configure -prefix /home/kylin/crystalmedia/server/media/depends-source-bak/qt-everywhere-src-5.12.3-release/qt_gcc_64 \-release -opensource -confirm-license -no-openssl -no-opengl -skip qtquickcontrols -skip qtquickcontrols2 -skip qtsensors -skip qtdoc -no-compile-examples -skip qtlocation
其中要安装一些xcb的库,具体遇到自己百度一下。
使用qmake的时候遇到的一些问题:
Qmake error: Unknown module(s) in QT: network widgets gui core
在qmake 文件夹下,也就是bin目录下新建一个文件qt.conf
添加安装路径:
[Paths]
Prefix=/home/kylin/qt-gcc_64
下面是一个通过qmake编译qt项目的脚本:
# Build Qt project.####################################################
### step 1: collect shell arguments
PROMPT=${PROMPT:-"[CI] "}function usage () {echo ${PROMPT}-----------------echo ${PROMPT}"Usage:"echo $PROMPT{PROMPT}"./$(basename $0) \\"echo ${PROMPT}" --qt <abs-dir of Qt executables>"echo ${PROMPT}" --source <abs-dir of source codes>"echo ${PROMPT}" --build <abs-dir for building process>"echo ${PROMPT}" --install <abs-dir for intalling targets>"echo ${PROMPT}" --depends <abs-dir of dependencies>"echo ${PROMPT}" [--rebuild"]echo ${PROMPT}""echo ${PROMPT}"Example:"echo ${PROMPT}"./$(basename $0) \\"echo ${PROMPT}" --qt \"/home/builder01/Workplace/depends/libqt\" \\"echo ${PROMPT}" --source \"/home/builder01/Workplace/libdarknet\" \\"echo ${PROMPT}" --build \"/home/builder01/Workplace/libdarknet-build\" \\"echo ${PROMPT}" --install \"/home/builder01/Workplace/depends/libdarknet\" \\"echo ${PROMPT}" --depends \"/home/builder01/Workplace/depends\""echo ${PROMPT}" --rebuild"
}if [ "$1" == "" ]; thenusageexit 1;
fi
INPUT="$0 $@"
PROCESS_ARGS=$(getopt -o q:s:b:i:d:v:r --long qt:,source:,build:,install:,depends:,version:,rebuild -- "$@")
eval set -- "$PROCESS_ARGS"while true; do
case "$1" in-q|--qt) DIR_LIBQT=$2 ; shift 2 ;;-s|--source) DIR_SOURCE=$2 ; shift 2 ;;-b|--build) DIR_BUILD=$2 ; shift 2 ;;-i|--install) DIR_INSTALL=$2 ; shift 2 ;;-d|--depends) DIR_DEPENDS=$2 ; shift 2 ;;-v|--version) VERSION=$2 ; shift 2 ;;-r|--rebuild) REBUILD=YES ; shift ;;--) shift ; break ;;*)echo "Internal error!" ; exit 1 ;;
esac
done### change to use qt in flow-depends,songky,2020-05-12
#DIR_LIBQT="${DIR_DEPENDS}/qt-gcc_64"[ -z "$DIR_LIBQT" ] && PAR_ERROR=YES
[ -z "$DIR_SOURCE" ] && PAR_ERROR=YES
[ -z "$DIR_INSTALL" ] && PAR_ERROR=YES
[ -z "$DIR_DEPENDS" ] && PAR_ERROR=YES
# version choice is disabled. You can enable it uncomment the lines below
#[ -z "$VERSION" ] && PAR_ERROR=YES#VERSION="debug release" ### defined in job stageif [ "#$PAR_ERROR" = "#YES" ]; thenecho ${PROMPT}Parameter error!. You input is interieted as:echo ${PROMPT}--------------------------echo ${PROMPT}$INPUTecho ${PROMPT}--------------------------echo ${PROMPT} Type \"./$(basename $0)\" for help.exit 1
fi#if test $REBUILD
#then
# REBUILD=YES
#else
# REBUILD=NO
#fi#trans git-lab viriables to project viriables
SMB_DIR=${sambaServer_flow:=---Empty---}
SMB_SERVER=${sambaServer_IP:=---Empty---}
SMB_USER=${sambaServer_user:=---Empty---}#build different versions in individual folder
cd ..
rm -r ./${CI_PROJECT_NAME}_${VERSION}
cp -a ${CI_PROJECT_NAME} ./${CI_PROJECT_NAME}_${VERSION}
cd ${CI_PROJECT_NAME}_${VERSION}
#DIR_SOURCE=${PWD}### print some debug info
if [[ ! "${flie_to_cat}" == "-" && -f "${flie_to_cat}" ]]; thenecho ""echo "contents of ${flie_to_cat}"cat ${flie_to_cat}
fiif [[ ! "${floder_to_ls}" == "-" && -d "${floder_to_ls}" ]]; thenecho ""echo "contents of ${floder_to_ls}"ls -l ${floder_to_ls}
fi
####################################################
### step 2: check settingsecho ${PROMPT}QtLib=$DIR_LIBQT
echo ${PROMPT}Source=$DIR_SOURCE
echo ${PROMPT}Build=$DIR_BUILD
echo ${PROMPT}Install=$DIR_INSTALL
echo ${PROMPT}Depends=$DIR_DEPENDS
echo ${PROMPT}Version=$VERSION
echo ${PROMPT}Rebuild=$REBUILD[ ! -d ${DIR_LIBQT} ] && echo "${DIR_LIBQT} not exists!" && exit 1
[ ! -d ${DIR_SOURCE} ] && echo "${DIR_SOURCE} not exists!" && exit 1
[ ! -d ${DIR_DEPENDS} ] && echo "${DIR_DEPENDS} not exists!" && exit 1#rm -fr ${DIR_INSTALL}/*
#mkdir -p ${DIR_BUILD}/debug
#mkdir -p ${DIR_BUILD}/release
#mkdir -p ${DIR_INSTALL}/debug
#mkdir -p ${DIR_INSTALL}/release
rm -fr ${DIR_INSTALL}/${VERSION}
mkdir -p ${DIR_BUILD}/${VERSION}
mkdir -p ${DIR_INSTALL}/${VERSION}# the .pro files in flow need environment variable 'DEPENDS_ROOT' to tell
# the path to the dependencies
export DEPENDS_ROOT=${DIR_DEPENDS}# Qt screen output settings
export QT_QPA_PLATFORM_PLUGIN_PATH=${DIR_DEPENDS}/qt-gcc_64/plugins
export QT_QPA_PLATFORM=offscreen
export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:${DIR_DEPENDS}/qt-gcc_64/plugins/platforms
echo "QT_QPA_PLATFORM_PLUGIN_PATH="${QT_QPA_PLATFORM_PLUGIN_PATH}
echo "QT_QPA_PLATFORM="${QT_QPA_PLATFORM}
echo "LD_LIBRARY_PATH="${LD_LIBRARY_PATH}####################################################
### step 3: make and run shell command lines
CPPCHECK_PASS=YESfor build_version in $VERSION ; doif [ "#${build_version}" = "#debug" ] || [ "#${build_version}" = "#DEBUG" ] || [ "#${build_version}" = "#Debug" ] ; thenVER_STR=debugelseVER_STR=releasefiif [ $REBUILD = "YES" ] ; thencmd_clear_build="rm -fr /${DIR_BUILD}/${VER_STR}/*"elsecmd_clear_build="echo Incremental build."fiexport BUILD_PATH=${DIR_BUILD}/${VER_STR}export INSTALL_PATH=${DIR_INSTALL}/${VER_STR}first_pass=YESecho ${PROMPT} Run QMake and make...echo Dir of Source:${DIR_SOURCE}for pro_file in $(ls ${DIR_SOURCE}/*.pro); doif [ $first_pass = "YES" ] ; then#clear install directorycmd_clear="rm -fr ${DIR_INSTALL}/${VER_STR}/* && ${cmd_clear_build}"first_pass=NOelsecmd_clear="echo 2nd pass..."ficmd_db="compiledb -n make"if [ $VER_STR = "debug" ] ; thencmd_qmake="${DIR_LIBQT}/bin/qmake ${DIR_SOURCE}/$(basename ${pro_file}) -spec ${DIR_LIBQT}/mkspecs/linux-g++ CONFIG+=debug CONFIG+=qml_debug"elsecmd_qmake="${DIR_LIBQT}/bin/qmake ${DIR_SOURCE}/$(basename ${pro_file}) -spec ${DIR_LIBQT}/mkspecs/linux-g++ CONFIG+=qtquickcompiler"fi# ${qmake_xxxxxx} is run twice to include the built targets for installation.build_cmd="${cmd_qmake} && make -j 8 && cd ${DIR_BUILD}/${VER_STR} && rm -fr \`find -name Makefile\` && ${cmd_qmake} && make install"# generate log filecmd_log="echo Built at $(date +%y%m%d_%H%M%S) >> ${DIR_INSTALL}/${VER_STR}/build-log-$(date +%y%m%d_%H%M%S).txt"cmdline="${cmd_clear} && cd ${DIR_BUILD}/${VER_STR} && ${build_cmd} && ${cmd_log}"eval ${cmdline}if [ $? -eq 0 ]; thenecho ${PROMPT}"${pro_file}-${VER_STR} has been successfully built."cp ${DIR_SOURCE}/scripts/startEngine.sh ${DIR_INSTALL}/${VER_STR}/elseecho ${PROMPT}" Build failed."exit 1fidone##### write version info into filereleaseNotes_filename="ReleaseNotes-$(date +%y%m%d_%H%M).txt"cmd_last_half=">> ${DIR_INSTALL}/${VER_STR}/${releaseNotes_filename}"### add components updated infoversion_cmd="echo build flow $(date +%y%m%d_%H%M%S) ${cmd_last_half}"### add code infoversion_cmd="${version_cmd} && echo ' ' ${cmd_last_half}"version_cmd="${version_cmd} && echo Code info:---------- ${cmd_last_half}"version_cmd="${version_cmd} && echo CI_COMMIT_SHA=${CI_COMMIT_SHA} ${cmd_last_half}"version_cmd="${version_cmd} && echo CI_COMMIT_SHORT_SHA=${CI_COMMIT_SHORT_SHA} ${cmd_last_half}"version_cmd="${version_cmd} && echo CI_COMMIT_REF_NAME=${CI_COMMIT_REF_NAME} ${cmd_last_half}"version_cmd="${version_cmd} && echo CI_COMMIT_BRANCH=${CI_COMMIT_BRANCH} ${cmd_last_half}"version_cmd="${version_cmd} && echo CI_COMMIT_TAG=${CI_COMMIT_TAG} ${cmd_last_half}"### add building env.version_cmd="${version_cmd} && echo ' ' ${cmd_last_half}"version_cmd="${version_cmd} && echo Building Env.: ---------- ${cmd_last_half}"version_cmd="${version_cmd} && echo depends_dir=${DIR_DEPENDS} ${cmd_last_half}"version_cmd="${version_cmd} && echo docker_image=${docker_image} ${cmd_last_half}"echo ${PROMPT} "write version info command:"echo ${PROMPT} "${version_cmd}"echo " "eval "${version_cmd}"if [ $? -eq 0 ]; thenecho ${PROMPT}"Write version info to file into finished."elseecho ${PROMPT}"Write version info to file into failed."exit 1fi
done####################################################
### step 4: zip release vesion files of branch master or branch customized-FlowDesk-by-Zhongshan-University, then copy to samba SMB_SERVER
# check if need to zip and scp new files to samba server and gitlab runners
if [[ ${zip_scp} == "yes" ]] && [[ ${VERSION} == "release" ]] ; thenecho ${PROMPT} "-----Continue to zip and scp release version to samba server-----"
elseexit 0
fiif [[ ${CI_COMMIT_REF_NAME} = *Zhongshan* ]] || [[ ${CI_COMMIT_REF_NAME} = "master" ]] ; then# auto add remote runners authenticity keysed -i "/StrictHostKeyChecking/c StrictHostKeyChecking no" /etc/ssh/ssh_config# zip packagefilename_suffix="$(date +%y%m%d_%H%M)_${CI_COMMIT_SHORT_SHA}.zip"if [[ ${CI_COMMIT_REF_NAME} = master ]];thenzip_filename="flow-master_"${filename_suffix}elif [[ ${CI_COMMIT_REF_NAME} = *Zhongshan* ]];thenzip_filename="flow-SYSU_"${filename_suffix}fizip_cmd="echo =====zip job begin====="zip_cmd="${zip_cmd} && cd ${DIR_INSTALL}"zip_cmd="${zip_cmd} && zip -ry ${zip_filename} ./release/*"# copy zip files to sambaServercp_zipfiles="echo ----- copy files to samba server -----"cp_zipfiles="${cp_zipfiles} && sshpass -p ${sambaServer_pwd} scp ${zip_filename} ${SMB_USER}@${SMB_SERVER}:${SMB_DIR}"zip_cmdline="${zip_cmd} && ${cp_zipfiles} && rm ${zip_filename}"echo ${PROMPT}"zip_cmdline:----------"echo ${zip_cmdline}echo ----------eval "${zip_cmdline}"if [ $? -eq 0 ]; thenecho ${PROMPT}"zip and copy ${zip_filename} to ${SMB_SERVER}/${SMB_DIR} finished."elseecho ${PROMPT}" zip and copy files failed."exit 0fi
fi
使用:
#!/bin/bashVERSION="release"
REBUILD="YES"if [ -n "$1" ];thenVERSION=$1
fiif [ -n "$2" ];thenREBUILD=$2
fi
MYQTPATH=/home/kylin/crystalmedia/server/media/media-depends/qt-gcc_64
export QMAKESPEC=$MYQTPATH/mkspecs/linux-g++./build-tg.sh \
-q ${MYQTPATH} \-s ${PWD}/crystal-media \
-b ${PWD}/build \
-i ${PWD}/install \
-d ${PWD}/media-depends \
-v ${VERSION} \-r ${REBUILD} \cp ../build/${VERSION}/engine/lib* ../install/
cp ../build/${VERSION}/server/Flow* ../install/echo `date`
echo ${VERSION} "rebuild":${REBUILD}
麒麟操作系统+龙心 编译qt-arm相关推荐
- 关于 国产麒麟系统编译Qt项目是报错:error: cannot find -lGL 的解决方法
若该文为原创文章,转载请注明原文出处 本文章博客地址:https://hpzwl.blog.csdn.net/article/details/123784051 红胖子(红模仿)的博文大全:开发技术集 ...
- linux飞腾cpu,基于飞腾CPU+银河麒麟操作系统编译安装tensorflow
由于飞腾CPU是aarch64指令集,当前并不存在可以通过pip直接安装的tensorflow包.因此我们只能通过编译安装.但是,要编译安装Tensorflow,必须要首先安装Bazel,而要安装Ba ...
- 基于飞腾CPU+银河麒麟操作系统编译安装tensorflow
为什么80%的码农都做不了架构师?>>> 由于飞腾CPU是aarch64指令集,当前并不存在可以通过pip直接安装的tensorflow包.因此我们只能通过编译安装.但是,要编 ...
- 银河麒麟操作系统常见运维问题
目录 银河麒麟 常见运维问题 1 安装问题 1) 高级安装ARM版本系统,新建分区sda1必须是/boot分区,sda2是根分区? 2) 用光盘安装或者U盘安装时,无法进入安装界面问题 3) 麒麟系 ...
- qt5.15.2在银河麒麟v10sp1上编译源码后安装运行
转载备份,原文章:银河麒麟V10系统+飞腾CPU交叉编译安装Qt-5.15.2_银河麒麟交叉编译_savagelin的博客-CSDN博客 操作系统版本名称:银河麒麟V10(SP1) 版本号:2203 ...
- 银河麒麟操作系统开发_银河初级开发者指南
银河麒麟操作系统开发 对于许多人来说,开始软件开发似乎太困难且繁琐的任务. 实际上,您只需要一台计算机并且对软件开发非常感兴趣即可上手. 在这个故事中,我将介绍软件开发的所有基本知识,并介绍一些您以前 ...
- linux环境下编译Qt源码
环境配置:Ubuntu-16.04 1) 下载源码 在官方网站:http://download.qt.io/archive/qt/5.12/5.12.5/single/上下载qt-everywhere ...
- 微信iOS版朋友圈可删除评论;周鸿祎:有的软件会偷拍偷录;银河麒麟操作系统V10发布| 极客头条
整理 | 屠敏 头图 | CSDN 下载自东方 IC 「极客头条」-- 技术人员的新闻圈! CSDN 的读者朋友们早上好哇,「极客头条」来啦,快来看今天都有哪些值得我们技术人关注的重要新闻吧. 国内要 ...
- 2020-09-14 编译Qt的MySQL 5.7插件: qsqlmysql.dll
文章更新于2020-09.14 (编译Qt的MySQL插件) 需要准备的工具包括 微软VS2019全套C++开发工具 MySQL 5.7社区版安装包https://downloads.mysql.co ...
最新文章
- 美图秀秀web开发文档
- 用OpenGL进行曲线、曲面的绘制
- Centos7安装防火墙firewall
- 计算机一级access考试题库,App Store 上的“计算机二级access-全国计算机等级考试题库”...
- OpenCV人脸检测与人脸识别
- 密位测距离口诀_电气故障怎么查?最新最全的79条电气故障诊断口诀
- 抖音最强python_装逼篇 | 抖音超火的九宫格视频是如何生成的,Python 告诉你答案...
- CS224n笔记3 高级词向量表示
- 计算机与打印机整体方案,打印机的一些使用方案
- memset()详解
- UML-----实现图(构件图、部署图)
- smartpdf双击无法返回latex如何解决
- 太实用了!这几个Python数据可视化案例!
- 图中PNP型三极管发射极和基极为什么要加个100K(R21)的电阻?
- 山东大学计算机网络答案,《计算机网络基础》山东大学20春( B 卷)
- 一个微信小程序开发示例
- CAS 单点登录使用详解
- GitChat在做什么
- 常用电源管理稳压IC
- 国外lead教程---EMU之SSN用不用