myearth

myearth

0个粉丝

3

问答

0

专栏

3

资料

myearth  发布于  2015-08-19 10:15:09
采纳率 0%
3个问答
13261

Hi3520,Hi3515,HI3531上移植和运行QT4.8.6

 

[i=s] 本帖最后由 myearth 于 2015-9-17 16:06 编辑 [/i]

在HI3531上移植和运行QT4.8.6 转自:http://lbc2100.blog.163.com/blog/static/1505536020149104565701/

1、前言: 近段有点时间,想把QT移植到HI3531上,在网上查找了很多资料,但都不是很全面,有些有问题也没有得到很好的体现。

2、环境: PC:ubuntu10.04

HI3531交叉工具链:arm-hisiv100nptl-linux- QT版本:qt4.8.6(Qt libraries 4.8.6 for embedded Linux (230 MB) QT-Creator版本:qt-creator-linux-x86-opensource-2.4.1.bin

3、交叉编译: 1) 进入qt-everywhere-opensource-src-4.8.6/mkspecs/qws目录,新建linux-hisi3531nptl-g++目录,复制linux-arm-g++目录下的所有文件到linux-hisi3531nptl-g++ cp –a linux-arm-g++/* linux-hisi3531nptl-g++ 2)进入linux-hisi3531nptl-g++,修改文件qmake.conf

modifications to g++.conf

QMAKE_CC = arm-hisiv100nptl-linux-gcc QMAKE_CXX = arm-hisiv100nptl-linux-g++ QMAKE_LINK = arm-hisiv100nptl-linux-g++ QMAKE_LINK_SHLIB = arm-hisiv100nptl-linux-g++

modifications to linux.conf

QMAKE_AR = arm-hisiv100nptl-linux-ar cqs QMAKE_OBJCOPY = arm-hisiv100nptl-linux-objcopy QMAKE_STRIP = arm-hisiv100nptl-linux-strip

3)打开文件qplatformdefs.h增加

undef O_CLOEXEC

          此处主要为解决:编译过程中找不到accept4函数问题

4)安装X11库 sudo apt-get install libX11-dev libXext-dev libXtst-dev

5)返回源码目录qt-everywhere-opensource-src-4.8.6进行配置 ./configure --prefix=/opt/qt4.8.6 -opensource -confirm-license -qt-sql-sqlite -qt-gfx-linuxfb -plugin-sql-sqlit -no-qt3support -no-phonon -no-svg -no-webkit -no-javascript-jit -no-script -no-scripttools -no-declarative -no-declarative-debug -qt-zlib -no-gif -qt-libtiff -qt-libpng -no-libmng -qt-libjpeg -no-rpath -no-pch -no-3dnow -no-avx -no-neon -no-openssl -no-nis -no-cups -no-dbus -embedded arm -platform linux-g++ -xplatform qws/linux-hisi3531nptl-g++ -little-endian -qt-freetype -no-opengl -no-glib -nomake demos -nomake examples -nomake docs -nomake tools

其中: --prefix=/opt/qte4.8.6 为交叉编译目标安装目录 -xplatform qws/linux-hisi3531nptl-g++指定编译器及平台配置信息

5)make

6)make install

4、 PC编译: 1) 重新解压qt-everywhere-opensource-src-4.8.6.tar.gz,进行PC编译 2) ./ configure 3) make 4) make install

5、 安装QT开发环境 1)sudo ./qt-creator-opensource-linux-x86-2.4.1.run 2) 下一步直到安装完成 3) 在应用程序,就可以看到QT Creator

6、 配置开发环境 1)从PC的QT安装目录中拷贝如下文件到交叉编译目录 cp /usr/local/Trolltech/Qt-4.8.6/bin/qml* /opt/qt4.8.6/bin/ 2)打开QT Creator 3)打开 工具-选项-QT版本 4)打开添加按键,添加交叉编译的qmake 5)进入工具链,打开添加按键, 选择GCCE,在编译器路经选择arm-hisiv100nptl-linux-g++的路经

到些就可以编译QT下自带的例子chip了,但这时在HI3531上还是不能显示的。

7、 配置海思HI3531 1) 按照《HIFB开发指南.pdf》 说明加载hifb.ko驱动,这里需要说明的是,如果QT程序运行在fb0上,分辨率为19201080,颜色格式为ARGB8888,1buffer模式下,则需要vram0_size = 192010804=8100K 如果为2 buffer模式下则需要vram0_size=1920108042=16200K 说明:为什么要使用ARGB8888而不用ARGB1555,是因为我们QT编译使用的是32位framebuffer。不然的话会做不了透明处理。

2)使能fb0,前提是VO设备已初始化完毕 static struct fb_bitfield g_r32 = {16,8, 0}; static struct fb_bitfield g_g32 = {8, 8, 0}; static struct fb_bitfield g_b32 = {0, 8, 0}; static struct fb_bitfield g_a32 = {24, 8, 0}; HI_BOOL show; HIFB_ALPHA_S stAlpha;

   struct fb_var_screeninfo stVarInfo;
   fd = open("/dev/fb0", O_RDWR, 0);
   show = 0x0;

   ioctl(fd, FBIOPUT_SHOW_HIFB, &show);

   stAlpha.bAlphaEnable = 0x1; 
   stAlpha.bAlphaChannel = 0x0; 
   stAlpha.u8Alpha0 = 0x0;
   stAlpha.u8Alpha1 = 0xff;
   stAlpha.u8GlobalAlpha = 0xff;
   ioctl(fd, FBIOPUT_ALPHA_HIFB, &stAlpha);
ioctl(fd, FBIOGET_VSCREENINFO, &stVarInfo);

   stVarInfo.xres = 1920;
   stVarInfo.yres = 1080;
   stVarInfo.xres_virtual = 1920;
   stVarInfo.yres_virtual = 1080;
   stVarInfo.transp= g_a32;
   stVarInfo.red = g_r32;
   stVarInfo.green = g_g32;
   stVarInfo.blue = g_b32;
stVarInfo.bits_per_pixel = 32;

    stVarInfo.activate = FB_ACTIVATE_NOW;
ioctl(fd, FBIOPUT_VSCREENINFO, &stVarInfo);
show = 0x1;

ioctl(fd, FBIOPUT_SHOW_HIFB, &show);
while(1) 
{
        Sleep(100);
}

   3)配置设备linux环境变量

      export QT_QWS_FONTDIR=/usr/lib/fonts              //字库的目录
      export QT_QWS_DISPLAY=“linuxFB:/dev/fb0“   //QT显示在fb0层

8、 运行CHIP

OK

9、 实现背景透明 只需要调用QWSServer::setBackground(QColor(0,0,0,0));即可关于这个QColor,在设置的时候,是按照ARGB8888来设置的,前三个数值是RGB,最后一个数值是透明度,0x00是全透,0x7f是半透,0xff是不透。

10、如何显示中文 从c:\windows\fonts 目录下复制*.ttf文件到字库目录,就可以显示了,但字体需要设置大些

我来回答
回答37个
时间排序
认可量排序

myearth

0个粉丝

3

问答

0

专栏

3

资料

myearth 2015-08-19 10:32:27
认可0
截图如下:

hudiiii

0个粉丝

32

问答

0

专栏

0

资料

hudiiii 2015-08-19 14:22:59
认可0
一看前面163的blog我就开始非常的蛋疼。通篇飞舞的广告。还是这里清爽。感谢分享。

jp1017

0个粉丝

78

问答

0

专栏

9

资料

jp1017 2015-09-14 16:38:39
认可0
写的有些粗糙,多配几张图,排版再优化下,给你加精呀,:lol这么好的东西,要让大家好好学习

myearth

0个粉丝

3

问答

0

专栏

3

资料

myearth 2015-09-17 10:20:14
认可0
[quote][url=forum.php?mod=redirect&goto=findpost&pid=20166&ptid=8512]jp1017 发表于 2015-9-14 16:38[/url]
写的有些粗糙,多配几张图,排版再优化下,给你加精呀,这么好的东西,要让大家好好学习[/quote]

是转的,我按照上面做了一遍,没问题才发的。生成的库比 好人 稍小点点。
有用就好,加不加精无所谓了:)也是自己做个记录吧
我是Hi3520D。

leee23

0个粉丝

3

问答

0

专栏

0

资料

leee23 2015-09-23 15:31:24
认可0
请教下楼主,交叉编译源码后,为什么还要在PC:Ubuntu编译源码呢?

cfgrpg

0个粉丝

7

问答

0

专栏

1

资料

cfgrpg 2015-09-23 17:27:27
认可0
略屌
略屌
略屌
略屌
略屌

myearth

0个粉丝

3

问答

0

专栏

3

资料

myearth 2015-10-12 10:12:27
认可0
[quote][url=forum.php?mod=redirect&goto=findpost&pid=20455&ptid=8512]leee23 发表于 2015-9-23 15:31[/url]
请教下楼主,交叉编译源码后,为什么还要在PC:Ubuntu编译源码呢?[/quote]

啥意思啊,交叉编译不在PC平台还在那里?

leee23

0个粉丝

3

问答

0

专栏

0

资料

leee23 2015-10-14 14:16:17
认可0
在前面步骤交叉编译qt源码后,后面为什么还需要重新编译qt源码
“PC编译:
1)      重新解压qt-everywhere-opensource-src-4.8.6.tar.gz,进行PC编译
2)      ./ configure
3)      make
4)      make install”
这一步没明白

myearth

0个粉丝

3

问答

0

专栏

3

资料

myearth 2015-10-16 15:10:58
认可0
[quote][url=forum.php?mod=redirect&goto=findpost&pid=21005&ptid=8512]leee23 发表于 2015-10-14 14:16[/url]
在前面步骤交叉编译qt源码后,后面为什么还需要重新编译qt源码
“PC编译:
1)      重新解压qt-everywhe ...[/quote]

4、 PC编译: 是用于PC机的,和交叉编译无关。

自己可以做一遍。

9527

0个粉丝

3

问答

0

专栏

0

资料

9527 2015-11-01 15:16:25
认可0
[quote][url=forum.php?mod=redirect&goto=findpost&pid=21005&ptid=8512]leee23 发表于 2015-10-14 14:16[/url]
在前面步骤交叉编译qt源码后,后面为什么还需要重新编译qt源码
“PC编译:
1)      重新解压qt-everywhe ...[/quote]

是安装linux桌面版的吧

skysyy

0个粉丝

0

问答

0

专栏

0

资料

skysyy 2015-11-20 15:38:09
认可0
其实就是两套:1:用于嵌入式(运行程序用)
                     2:用在pc linux下(调试用)
在2下可发调试(还有一个模拟fb的,有点记不太清楚了),调通后,再用1编译,生成文件,然后放到嵌入式里面就可以运行了(嵌入式也要有qt库的引用)。

好处是不用编译gdbserver来远程调试。

skysyy

0个粉丝

0

问答

0

专栏

0

资料

skysyy 2015-11-20 15:40:59
认可0
做开发的话,感觉fedora比Ubuntu要好。

fb362203

0个粉丝

24

问答

0

专栏

0

资料

fb362203 2016-05-29 17:20:00
认可0
感谢楼主的无私奉献

黄征one

0个粉丝

0

问答

0

专栏

0

资料

黄征one 2016-06-09 14:52:55
认可0
好东西,学习了

ngswfx

1个粉丝

55

问答

1

专栏

40

资料

ngswfx 2016-06-13 12:13:31
认可0
学习了,以后再尝试

love_lin

1个粉丝

22

问答

0

专栏

1

资料

love_lin 2016-08-05 14:57:30
认可0
奇怪了,我按照楼主的步骤添加了qt-everywhere-opensource-src-4.8.6/mkspecs/qws/linux-hisi3516a-g++,并且添加的相应的文件qmake.conf,内容如下:
[code]  1 #
  2 # qmake configuration for building with arm-linux-g++
  3 #
  4
  5 include(../../common/linux.conf)
  6 include(../../common/gcc-base-unix.conf)
  7 include(../../common/g++-unix.conf)
  8 include(../../common/qws.conf)
  9
10 # modifications to g++.conf
11 QMAKE_CC                = arm-hisiv300-linux-gcc
12 QMAKE_CXX               = arm-hisiv300-linux-g++
13 QMAKE_LINK              = arm-hisiv300-linux-g++
14 QMAKE_LINK_SHLIB        = arm-hisiv300-linux-g++
15
16 # modifications to linux.conf
17 QMAKE_AR                = arm-hisiv300-linux-ar cqs
18 QMAKE_OBJCOPY           = arm-hisiv300-linux-objcopy
19 QMAKE_STRIP             = arm-hisiv300-linux-strip
20
21 load(qt_config)[/code]
但是,为何执行./configure --prefix=/opt/Qt4.8.6 -opensource -confirm-license -no-qt3support -no-phonon -no-phonon-backend -no-multimedia -no-gtkstyle -no-svg -no-webkit -no-javascript-jit -no-script -no-scripttools -    no-declarative -no-declarative-debug -qt-gfx-linuxfb -qt-zlib -no-gif -qt-libtiff -qt-libpng -no-libmng -qt-libjpeg -no-rpath -no-pch -no-3dnow   -no-avx  -no-neon -no-openssl -no-nis -no-cups -no-dbus     -embedded arm -xplatform qws/linux-hisi3516a-g++ -little-endian -qt-freetype -no-opengl -no-glib -nomake demos -nomake examples -nomake docs
时一直不是用我指定的gcc++配置呢?执行结果如下图:

呆呆

0个粉丝

0

问答

0

专栏

0

资料

呆呆 2016-08-06 11:29:02
认可0
写的太乱了

chanyenping

0个粉丝

0

问答

0

专栏

0

资料

chanyenping 2017-03-08 10:29:39
认可0
因為需要先編 qmake 請耐心等候 :)

Creating qmake, please wait ...

伙上伴冰

0个粉丝

0

问答

0

专栏

0

资料

伙上伴冰 2017-03-19 17:40:38
认可0
好资料,好好去试一下

伙上伴冰

0个粉丝

0

问答

0

专栏

0

资料

伙上伴冰 2017-03-20 20:33:59
认可0
C:\\windows\fonts 大概有90M:(
加载中···
或将文件直接拖到这里
悬赏:
E币
网盘
* 网盘链接:
* 提取码:
悬赏:
E币

Markdown 语法

  • 加粗**内容**
  • 斜体*内容*
  • 删除线~~内容~~
  • 引用> 引用内容
  • 代码`代码`
  • 代码块```编程语言↵代码```
  • 链接[链接标题](url)
  • 无序列表- 内容
  • 有序列表1. 内容
  • 缩进内容
  • 图片![alt](url)
+ 添加网盘链接/附件

Markdown 语法

  • 加粗**内容**
  • 斜体*内容*
  • 删除线~~内容~~
  • 引用> 引用内容
  • 代码`代码`
  • 代码块```编程语言↵代码```
  • 链接[链接标题](url)
  • 无序列表- 内容
  • 有序列表1. 内容
  • 缩进内容
  • 图片![alt](url)
相关问答
无更多相似问答 去提问
举报反馈

举报类型

  • 内容涉黄/赌/毒
  • 内容侵权/抄袭
  • 政治相关
  • 涉嫌广告
  • 侮辱谩骂
  • 其他

详细说明

易百纳技术社区