交叉编译Qt5.5.1 with egl (1)

Step 1

假设嵌入式平台已经弄好了,什么boot,kernel,nfs都搭好了,开始准备开发。

1.安装交叉编译器,我使用的是板子提供商提供的交叉编译器。

cp /media/Upan/arm-linux-gcc -r ~/opt/

2.配置环境变量,在~/.bashrc中添加

export PATH=$PATH:/home/dashuage/opt/arm-linux-gcc/bin

3.source一下,在终端下执行

arm-linux-gcc --version

如果报错,找不到文件,有2个可能的原因:
- 未设置可执行权限,chmod +x arm-linxu-gcc 等程序
- 64位兼容32位程序问题,解决办法看这里

4.我觉得 arm-linux-gcc –version 有时候有点不太靠谱,helloworld才是正道。果然,出问题了

Error1
arm-linux-gnueabi-gcc error trying to exec ‘cc1plus’

在libexec中找到了这个程序,设置可执行权限。继续报错:

Error2
Assembler messages:
Fatal error: invalid –march= option `armv5te’

我感觉还是文件权限的问题,在交叉编译器文件目录下,找到了一个bin目录,里面有gcc g++ ld之类的程序,立刻设置可执行权限。继续报错:

Error3
../lib/libstdc++.so: file not recognized: File format not recognized
Collect2: error: ld returned 1 exit status

折腾了大半天,原来,libstdc++.so原本是个软连接,现在变成了data,用file命令查看的是data类型,所以readelf也读不出来,cat一下,发现,它果然是个软连接。好吧,那就重新ln一下吧。

我写了一个脚本,自动恢复当前目录下的软连接。

到这里,helloworld终于算是编译过去了。

Step 2

下载qt-everywhere源码,解压

Step 3

配置configure参数

./configure -v \
-prefix $PWD/_install \
-release \
-make libs \
-xplatform linux-arm-mydevice-g++ \
-optimized-qmake \
-pch \
-qt-sql-sqlite \
-qt-libjpeg \
-qt-zlib \
-no-sse2 \
-no-openssl \
-no-nis \
-no-cups \
-no-glib \
-no-c++11 \
-no-separate-debug-info \
-nomake examples -nomake tools \
--no-use-gold-linker -qt-sql-sqlite \
-confirm-license -qt-xcb -opensource \
-no-gtkstyle -qt-freetype \
-opengl es2 \ 
-egl \ 
-eglfs \
-linuxfb \
-no-directfb 

顺便chmod +x一下

Step 4

添加板子的信息,在qt源码根目录下,执行

cp qtbase/mkspecs/linux-arm-gnueabi-g++ -r qtbase/mkspecs/linux-arm-mydevice-g++

修改qtbase/mkspecs/linux-arm-mydevice-g++/qmake.conf文件,把里面的编译器改成自己的交叉编译器。

Step 5

如果要编译EGL,需要做如下步骤:
1. 交叉编译的EGL, GLEv2, Mali(我的板子用的是mali),一般板子的厂商都会提供,把它们和交叉编译器放在一起就好了,后面需要用绝对路径指定这些库的includepath、libpath、lib。
2. 利用Qt源码提供的硬件配置文件,进行修改。找到和自己的板子最接近的那个

cp qtbase/mkspecs/devices/linux-arm-hisicon-hix*&^-g++ -r qtbase/mkspecs/devices/linux-arm-hisiv400-g++
  1. 修改linux-arm-hisiv400-g++中的qmake.conf,指定自己的EGL文件。

从这个文件里面,其实就是配置各种环境变量,这些环境变量就可以告诉Qt编译的时候,具体编译那个模块,需要到哪里去找头文件和库文件。如果后面配置的时候,发现没有找到,可以在这里面添加修改,有没有觉得很神奇?

注意,指定库文件的时候,大小写敏感。网上各种-lMali,折腾半天发现,我擦,我的是libmali.so, 需要-lmali。

Step 6

仔细看configure参数,可以发现,仅仅只有-xplatform linux-arm-mydevice-g++ 一项,是和硬件板子有关系的,而它只指向了Step4中的文件,没有指定Step5的文件。可以考虑Step 5配置文件里的环境变量写到Step 4的配置文件里去。

官方用的是-device -device-option;关于这两种的区别,我后续再来探究一下。

Step 7

在Qt源码根目录下,./config5-5-1.sh开始配置。

Step 8

观察configure清单,看到 egl下的mali opengl egl都是yes,好开森啊~~~

~未完待续~

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
### 回答1: 您好,要下载Qt5.5.1源码,您可以按照以下步骤操作: 1. 打开Qt官方网站:https://www.qt.io/downloads,点击 "下载"按钮。 2. 在下载页面中,选择“源代码”选项卡,并选择对应操作系统的Qt版本。 3. 在下载页面中会有一个 "开始下载"按钮,点击该按钮即可开始下载Qt5.5.1源码的压缩包。 4. 下载完成后,将压缩包解压到您希望存放Qt源码的目录中。 5. 打开解压后的文件夹,在该文件夹中找到 "configure" 文件,并双击运行。 6. 配置脚本将根据您的操作系统和编译器设置Qt编译环境。 7. 配置完成后,使用命令行或者IDE打开Qt源码文件夹。 8. 在Qt源码文件夹中,可以找到各个模块的源代码以及示例和文档资料。 这样,您就成功下载了Qt5.5.1的源码,并可以在自己的机器上进行阅读、学习或者二次开发。如果您需要根据自己的需求进行编译构建,可以参考Qt官方的编译指南进行操作。祝您学习愉快! ### 回答2: Qt 5.5.1是一个跨平台的应用程序开发框架,如果想要下载它的源码,可以按照以下步骤进行: 1. 打开Qt的官方网站(https://www.qt.io/),点击网站顶部的"Download"按钮。 2. 在下载页面上,选择"Archives"选项卡,找到"Qt 5.5.1"版本并点击它。 3. 在弹出的页面上,选择你的操作系统和编译器版本。如果你使用的是Windows操作系统,可以选择基于MSVC 2013或者MinGW编译器的版本,如果是Mac系统,可以选择基于Clang版本的Qt,如果是Linux系统,可以选择基于GCC版本的Qt。 4. 根据你的选择,点击相应的下载链接,开始下载相应的离线安装包。 5. 下载完成后,解压安装包,你将得到Qt 5.5.1的源码文件。 另外,Qt的源码也可以通过版本控制工具Git进行获取。你可以在Qt的官方Git仓库(https://code.qt.io/cgit/qt/qt5.git/)中找到Qt 5.5.1的源码,然后根据Git的用法进行克隆或者下载源码。 需要注意的是,Qt的源码下载可能会比较大,所以下载时间可能会比较长,而且需要一定的网络带宽和存储空间来存储源码。 ### 回答3: 您可以通过以下步骤下载qt5.5.1源码: 1. 打开Qt官方网站(https://www.qt.io/),并点击顶部菜单栏中的“下载”按钮。 2. 在下载页面中,您可以看到不同版本的Qt可用于下载。向下滚动页面,直到找到下方的“历史Qt版本”部分。 3. 在“历史Qt版本”部分中,找到并点击“5.5.1版本”的链接。 4. 进入5.5.1版本的下载页面后,您将看到不同的Qt安装程序。寻找一个标有“源代码”或“src”的选项,并点击下载链接。 5. 下载源代码包后,您可以解压缩它以获取Qt 5.5.1的源代码。 请注意,Qt 5.5.1是一个旧版本,可能已经过时并且不再接收官方支持。如果您正在寻找最新版本的Qt源代码,建议您查看Qt官方网站上可用的最新版本。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值