Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Linux编译移植Qt5的环境_OMAPL138平台 #29

Open
carloscn opened this issue Apr 11, 2022 · 0 comments
Open

Linux编译移植Qt5的环境_OMAPL138平台 #29

carloscn opened this issue Apr 11, 2022 · 0 comments

Comments

@carloscn
Copy link
Owner

Linux编译移植Qt5_OMAPL138

【导语】:昨天编译Qt5各种失败,各种离奇的错误在Google上面也搜索不到,真是让人“蛋疼菊紧”,今天把所有的环境全部清理干净,也重新解压了Qt5.1.1的源码包,重新走了一遍,效果还可以,也没有出现PDA LTS什么库问题,现在整理一下详细过程和细节点。

另外说一下,我使用Qt5.8.0的源码包进行编译,我的OMAPL138的ARM9架构,在configure阶段就提示我your platform arch too old. 意思就是我的平台的架构太老了,所以如果在ARM9的架构上面编译Qt5,选择一个稍微老一点的版本。我这里选择Qt5.1.1

**再补充一点:如果在曾经执行过./configure这个命令了,如果出了问题进行修正,最好把这个源码包删除,重新解压一个源码包,说不定哪个配置属性就影响了后续的操作,我之前就是总在这个里,以为每次./configure都是重新配置,然而并不是这样。 **


编译Qt5.1.1

1 准备工作

2 配置源码文件

下载qt-everywhere-opensource-src-5.1.1.tar.gz的解压,并且切换到这个目录。开始配置信息,我这里有配置好的文件,(链接: https://pan.baidu.com/s/1qYPyAoW 密码: 8eey)这个文件包含一个配置信息的run.sh脚本,和linux-arago-gnueabi-g++的架构信息文件夹。

把linux-arago-gnueabi-g++架构文件夹拷贝到./qtbase/mkspec文件夹里面,然后我们修改这个文件夹里面的qmake.conf文件,在程序内标定注意事项:

  • QMAKE_CC等编译器使用的是绝对路径。
  • QMAKE_CFLAGS_RELEASE 这里需要写好你目标板子的架构信息(可以在终端运行 arch命令查看)
  • include路径看看其他架构文件夹里面的qmake.conf如何指定,可能不同版本稍有不同。
#
# qmake configuration for building with arm-arago-linux-gnueabi-g++
#

MAKEFILE_GENERATOR      = UNIX
CONFIG                 += incremental
QMAKE_INCREMENTAL_STYLE = sublib

#Compiler Flags to take advantage of the ARM architecture
#Run the linux terminal command "arch" to see the detail your target cpu arch information.
QMAKE_CFLAGS_RELEASE += -O3 -march=armv5te
QMAKE_CXXFLAGS_RELEASE += -O3 -march=armv5te

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

# modifications to g++.conf
QMAKE_CC                = /home/delvis/opt/toolschain/omapl/arm-arago-linux-gnueabi/bin/arm-arago-linux-gnueabi-gcc
QMAKE_CXX               = /home/delvis/opt/toolschain/omapl/arm-arago-linux-gnueabi/bin/arm-arago-linux-gnueabi-g++
QMAKE_LINK              = /home/delvis/opt/toolschain/omapl/arm-arago-linux-gnueabi/bin/arm-arago-linux-gnueabi-g++
QMAKE_LINK_SHLIB        = /home/delvis/opt/toolschain/omapl/arm-arago-linux-gnueabi/bin/arm-arago-linux-gnueabi-g++

# modifications to linux.conf
QMAKE_AR                = /home/delvis/opt/toolschain/omapl/arm-arago-linux-gnueabi/bin/arm-arago-linux-gnueabi-ar cqs
QMAKE_OBJCOPY           = /home/delvis/opt/toolschain/omapl/arm-arago-linux-gnueabi/bin/arm-arago-linux-gnueabi-objcopy
QMAKE_NM                = /home/delvis/opt/toolschain/omapl/arm-arago-linux-gnueabi/bin/arm-arago-linux-gnueabi-nm -P
QMAKE_STRIP             = /home/delvis/opt/toolschain/omapl/arm-arago-linux-gnueabi/bin/arm-arago-linux-gnueabi-strip
load(qt_config)

再来看run.sh的配置信息(注意给定run.sh chmod 777 权限)注意几个关键点:

  • -prefix :指定make install之后的安装路径。
  • -xplatform :注意是开头字母是x 还有platform,如果少了x会报错说:/usr/bin/ld: .libs/dev2gif.o: Relocations in generic ELF (EM: 40)
  • -xplatform 后面指定我们上面定义的架构信息文件夹。
#!/bin/sh
./configure \
-v \
-prefix /home/delvis/work/qt5.1.1 \
-release \
-opensource \
-no-accessibility \
-xplatform linux-arago-gnueabi-g++ \
-optimized-qmake \
-pch \
-qt-sql-sqlite \
-qt-zlib \
-no-opengl \
-no-sse2 \
-no-openssl \
-no-nis \
-no-cups \
-no-glib \
-no-pkg-config \
-nomake examples \
-lrt \
-no-separate-debug-info

执行sudo ./run.sh然后让它完成配置。

sudo make -j4 开始编译,编译的过程不可能是一帆风顺的,总会会出现各种的错误,自己找找错误解决吧

sudo make install之后进入我们-prefix的路径考培就好了。

拷贝文件到目标板并配置环境

1)传输Qt5.1.1到开发板

就是把我们刚才编译的环境拷贝到我们的目标板的目录下,可以使用FTP,可以使用OTG挂在U盘的方式,我喜欢使用SSH协议的scp命令。

sudo scp -r /home/delvis/work/qt5.1.1 root@192.168.2.103:/opt 输入密码之后就可以把整个文件夹传输到开发板上面了。

2) 配置开发板的环境

我们传输完毕之后,则需要在开发板上设定环境,当我们运行qt程序的时候才能寻找到这些Qt库文件。

打开

vi /etc/profile

增加以下,需要注意的是QT_ROOT,写对Qt的路径,还有TSLIB_ROOT编译的是tslib的路径。

export TSLIB_ROOT=/opt/tslib1.4                                                 
export QT_ROOT=/opt/qt5.1.1                                                
export TSLIB_TSDEVICE=/dev/input/event2                                         
export TSLIB_TSEVENTTYPE=input                                                  
export TSLIB_CONFFILE=/opt/tslib1.4/etc/ts.conf                                 
export TSLIB_PLUGINDIR=/opt/tslib1.4/lib/ts                                     
export TSLIB_CONSOLEDEVICE=none                                                 
export TSLIB_FBDEVICE=/dev/fb0                                                  
export QWS_MOUSE_PROTO=tslib:/dev/input/event2                                  
export LD_LIBRARY_PATH=/lib:/usr/lib:/usr/local/lib:$QT_ROOT/lib:$TSLIB_ROOT/lib
export QT_QPA_PLATFORM_PLUGIN_PATH=$QT_ROOT/plugins
export QT_QPA_PLATFORM=linuxfb:tty=/dev/fb0
export QT_QPA_FONTDIR=$QT_ROOT/lib/fonts
export QT_QPA_GENERIC_PLUGINS=tslib 

完成之后,更新一下环境。

source /etc/profile

完成配置。

3)测试

我们利用Qt Creator制作一个简单的界面,然后编译出可执行文件,讲可执行文件传输到目标板子上面执行,我们的可执行程序叫做TestEM,需要qws参数。

./TestEM -qws

然后就可以看见界面了。

参考文献:

[0] Carlos Wei著,Linux编译Qt4的环境_OMAPL138. CNBLOGS

[1] leocloud著 QT5.7交叉编译安装到arm. CSDN博客.

[2] 灿哥哥著. Qt5.7.0配置选项(configure options). CSDN博客.

[3] BigSam78. ARM 指令集版本和ARM 版本. 新浪博客.


版权声明:

1. 本文为MULTIBEANS团队研发跟随文章,未经允许不得转载。

2· 文中涉及的内容若有侵权行为,请与本人联系,本人会及时删除。

3· 尊重成果,本文将用的参考文献全部给出,向无私的工程师,爱好者致敬。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

1 participant