基于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灯照的效果。

你可能感兴趣的:(多媒体,嵌入式系统)