主题 : 基于Nanopi2 硬件  交叉编译QT 5.6 (支持硬件OpenGL) 复制链接 | 浏览器收藏 | 打印
交流群:64148200
级别: 侠客
UID: 3401
精华: 0
发帖: 58
金钱: 290 两
威望: 58 点
贡献值: 0 点
综合积分: 116 分
注册时间: 2009-01-09
最后登录: 2020-11-12
楼主  发表于: 2016-06-25 14:35

 基于Nanopi2 硬件  交叉编译QT 5.6 (支持硬件OpenGL)

1、移植dbus:
./configure --host=arm-linux --prefix=/usr/local/arm/ CC=arm-linux-gcc --cache-file=arm-linux.cache --without-x CFLAGS=-I/usr/local/arm/include LDFLAGS=-L/usr/local/arm/lib

报错:checking abstract socket namespace... configure: error: cannot run test program while cross compiling
解决:1,首先用locate pkgconfig查看下pkgconfig安装了没有,一般都安装了。找到路径配置到环境变量里:export PKG_CONFIG_PATH=/usr/lib/pkgconfig
2,光设这个环境变量还是不行的,在终端里输入:
#echo ac_cv_have_abstract_sockets=yes>arm-linux.cache
之后,./configure通过!
make
make install

2、移植alsa
./configure --target=arm-linux --host=arm --prefix=/usr/local/arm/
make
make install

3、移植 pcre-8.39.tar.bz2  给qt编译的参数-system-pcre 使用;
./configure --host=arm --target=arm-linux --prefix=/usr/local/arm --enable-pcre16
make
make install

4、移植QT5.6

echo yes | ./configure --prefix=/usr/local/Trolltech/QtEmbedded-5.6.0-arm -opensource -debug -no-c++11 -xplatform linux-arm -alsa -opengl es2 -eglfs -qt-freetype -system-pcre -nomake tests -make examples -v  -I/usr/local/arm/include -L/usr/local/arm/lib -I/usr/local/arm/nexell/include/khronos -L/usr/local/arm/nexell/lib

make
make install

a、
eglconvenience/qeglstreamconvenience_p.h:56:9: error: ‘intptr_t’ does not name a type
typedef intptr_t EGLAttrib;
         ^
In file included from eglconvenience/qeglstreamconvenience.cpp:34:0:

增加 typedef int intptr_t ;

b、

vim qtbase/src/plugins/platforms/eglfs/deviceintegration/eglfs_mali/qeglfsmaliintegration.cpp

注释掉 fbdev_window 结构体定义

5、附件文件说明(文件下载地址 :http://pan.baidu.com/s/1c12HCLM
linux-arm.tar.bz2
qt的编译配置文件,解压到QT源码的qtbase/mkspecs/目录下,主要修改qmake.conf文件

#
# qmake configuration for building with arm-linux-gnueabi-g++
#

MAKEFILE_GENERATOR      = UNIX
CONFIG                 += incremental
QMAKE_INCREMENTAL_STYLE = sublib

QT_QPA_DEFAULT_PLATFORM = linuxfb
QMAKE_CFLAGS_RELEASE   += -O2 -march=armv7-a
QMAKE_CXXFLAGS_RELEASE += -O2 -march=armv7-a

include(../common/linux.conf)
include(../common/gcc-base-unix.conf)
include(../common/g++-unix.conf)

#opengl2 lib and include
QMAKE_INCDIR_OPENGL_ES2 = /usr/local/arm/nexell/include/khronos/
QMAKE_LIBDIR_OPENGL_ES2 = /usr/local/arm/nexell/lib
QMAKE_INCDIR_EGL = /usr/local/arm/nexell/include/khronos/
QMAKE_LIBDIR_EGL = /usr/local/arm/nexell/lib


# modifications to g++.conf
QMAKE_CC                = arm-linux-gcc
QMAKE_CXX               = arm-linux-g++
QMAKE_LINK              = arm-linux-g++
QMAKE_LINK_SHLIB        = arm-linux-g++

# modifications to linux.conf
QMAKE_AR                = arm-linux-ar cqs
QMAKE_OBJCOPY           = arm-linux-objcopy
QMAKE_NM                = arm-linux-nm -P
QMAKE_STRIP             = arm-linux-strip
load(qt_config)


b、nexell.tar.bz2
这是三星官方提供的OpenGL的库和头文件
解压到 /usr/local/arm 下面。如果需的话把这个包也解压到开发板中。

c、QtEmbedded-5.6.0-arm.tar.bz2
编译完成的安装包,可以解压到开发板中运行测试程序
比如:进入QtEmbedded-5.6.0-arm/examples/qt3d/lights
# ./lights -platform eglfs
可以在屏幕上看到3D灯照的效果。



QQ交流群: 64148200