交叉编译Qt5.6.1:飞腾cpu(1500a v1.0 64位)+银河麒麟服务器

交叉编译Qt5.6.1:飞腾cpu(1500a v1.0 64位)+银河麒麟服务器
  目标机环境:飞腾cpu(1500a v1.0 64位),银河麒麟服务器操作系统
  宿主机环境:Unbuntu16_64bit
  目标机上环境
交叉编译Qt5.6.1:飞腾cpu(1500a v1.0 64位)+银河麒麟服务器_第1张图片

1. 安装交叉编译器
最好找硬件厂商询问交叉编译器,由于客户不方便提供,只好找网络上架构相近的编译器使用.

#安装
sudo apt-get install g++-aarch64-linux-gnu

安装后查看交叉编译版本信息,确保Target与目标机的Target一致

#版本号
aarch64-linux-gnu-g++ -v

交叉编译Qt5.6.1:飞腾cpu(1500a v1.0 64位)+银河麒麟服务器_第2张图片

总结(可跳过)
  第一次按Qt-4.8.7交叉编译平台的搭建、移植详解的命令:sudo apt-get install g++-arm-linux-gnueabihf ,无法在目标机运行,原因是编译器的target和目标机g++不一样

根据命令:sudo apt-get install g++-arm-linux-gnueabihf 与target ( arm-linux-gnueabihf )的关系,推测与目标机的环境匹配的交叉编译器安装命令应该为:sudo apt-get install g++-aarch64-linux-gnu,可行(仅为推测,其他环境可能不适配)

2. 测试交叉编译器
  由于qt工程庞大,编译耗时,最好在编译qt前确认交叉编译器可用
  2.1 创建文件 hello.c

#include 
int main()
{
     
	printf("hello word\n");
	return 0;
}

  2.2 编译:

aarch64-linux-gnu-gcc -m64 -o helloAarch64 hello.c

输出文件:helloAarch64,测试能否在目标机上运行

3. qt编译环境配置

sudo apt-get install libx11-dev libxext-dev libxtst-dev zlib1g-dev lib32ncurses5 lib32z1 

4. configure
4.1 创建mkspecs环境

cd /qtbase/mkspecs/
mkdir linux-aarch64-gnu-g++
cp linux-arm-gnueabi-g++/* linux-aarch64-gnu-g++/
gedit linux-aarch64-gnu-g++/qmake.conf

交叉编译Qt5.6.1:飞腾cpu(1500a v1.0 64位)+银河麒麟服务器_第3张图片
4.2 ./configure
  经多次测试,最终配置指令:

./configure -prefix /usr/local/qt561_64 -opensource -xplatform linux-aarch64-gnu-g++ -confirm-license --release -qt-zlib -no-gif -qt-freetype  -no-openssl  -no-glib -arch aarch64 -sysroot / -v -nomake examples -no-opengl -qt-zlib -no-gif -qt-libpng -qt-libjpeg -no-sm -no-xshape -no-xvideo -no-xsync -no-xinerama -no-xcursor -no-xfixes -no-xrandr -no-xrender -no-mitshm -no-fontconfig -no-xinput

(若遇到./configure报错,修改指令前,先清除,否则新指令可能未生效)

#清除指令
gmake confclean

5 make

#该步骤时间长
make
#安装,qt将会安装在 -prefix 指定的目录
make install

6 安装QtCreator并配置环境

6.1 下载QtCreator安装包
  qt-creator-opensource-linux-x86_64-3.5.1.run
6.2 配置
qt版本:交叉编译Qt5.6.1:飞腾cpu(1500a v1.0 64位)+银河麒麟服务器_第4张图片
编译器:选择交叉编译器的g++交叉编译Qt5.6.1:飞腾cpu(1500a v1.0 64位)+银河麒麟服务器_第5张图片

7 遇到的错误记录,仅供参考

7.1 错误1:no command

#报错前指令
./configure -prefix /usr/local/qt561_64 -opensource -xplatform linux-aarch64-gnu-g++ -confirm-license --release -qt-zlib -no-gif -no-freetype  -no-openssl  -no-glib -no-webkit -no-qt3support -arch aarch64 -sysroot / -v -nomake examples -nomake demos  -no-opengl -qt-zlib -no-gif -no-libtiff -qt-libpng -qt-libmng -qt-libjpeg -no-sm -no-xshape -no-xvideo -no-xsync -no-xinerama -no-xcursor -no-xfixes -no-xrandr -no-xrender -no-mitshm -no-fontconfig -no-xinput -fast
#报错1:
-no-webkit: invalid command-line switch
-no-qt3support: invalid command-line switch
Unknown part demos passed to -nomake.
-no-libtiff: invalid command-line switch
-qt-libmng: invalid command-line switch
-fast: invalid command-line switch
修改1:
./configure -prefix /usr/local/qt561_64 -opensource -xplatform linux-aarch64-gnu-g++ -confirm-license --release -qt-zlib -no-gif -no-freetype  -no-openssl  -no-glib -arch aarch64 -sysroot / -v -nomake examples -no-opengl -qt-zlib -no-gif -qt-libpng -qt-libjpeg -no-sm -no-xshape -no-xvideo -no-xsync -no-xinerama -no-xcursor -no-xfixes -no-xrandr -no-xrender -no-mitshm -no-fontconfig -no-xinput

7.2 错误2: ft2build.h

#报错2(make阶段)
fatal error: ft2build.h: No such file or directory
#修改2.1(无效)
apt-get install libfreetype-dev
make
#修改2.2
#先清除
gmake confclean
#配置
./configure -prefix /usr/local/qt561_64 -opensource -xplatform linux-aarch64-gnu-g++ -confirm-license --release -qt-zlib -no-gif -qt-freetype  -no-openssl  -no-glib -arch aarch64 -sysroot / -v -nomake examples -no-opengl -qt-zlib -no-gif -qt-libpng -qt-libjpeg -no-sm -no-xshape -no-xvideo -no-xsync -no-xinerama -no-xcursor -no-xfixes -no-xrandr -no-xrender -no-mitshm -no-fontconfig -no-xinput
#编译
make

7.3 报错3 undefined VP8DspInitNEON

#报错3
/dec.o:dec.c:function VP8DspInit: error: undefined reference to 'VP8DspInitNEON'
/enc.o:enc.c:function VP8EncDspInit: error: undefined reference to 'VP8EncDspInitNEON'
./lossless.o:lossless.c:function VP8LDspInit: error: undefined reference to 'VP8LDspInitNEON'
/upsampling.o:upsampling.c:function WebPInitUpsamplers: error: undefined reference to 'WebPInitUpsamplersNEON'
修改3
qtimageformats/src/3rdparty/libwebp/src/dsp/dsp.h文件:
 //#define WEBP_USE_NEON //注释第68行后就可以编译通过

你可能感兴趣的:(嵌入式,qt)