Cross compile Qt 5 HelloWorld app for ARMv7L

匿名 (未验证) 提交于 2019-12-03 01:48:02

问题:

I've a simple Qt helloworld.cpp that I cross compiled for armv7l using Linaro GCC arm-linux-gnueabihf-g++ on Ubuntu 16.04 and copied the file on a target ARM board running Linux Kernel 4.4, GCC 5.3. The target is TI Vayu ES 2.0 (which has ARM Cortex A15 core).

Source

helloworld.cpp     #include <QApplication>     #include <QLabel>     int main(int argc, char **argv){         QApplication app(argc,argv);         QLabel label("Hello World");         label.show();         return app.exec();     }  helloworld.pro     QT += core gui widgets     SOURCES += helloworld.cpp  

Build:

patel@11:02:43~$make arm-linux-gnueabi-g++ -c -pipe -O2 -std=gnu++11 -Wall -W -D_REENTRANT -fPIC -DQT_NO_DEBUG -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_CORE_LIB -I. -I/opt/Qt5.7/Qt-v5.7.1-armv7l/include -I/opt/Qt5.7/Qt-v5.7.1-armv7l/include/QtWidgets -I/opt/Qt5.7/Qt-v5.7.1-armv7l/include/QtGui -I/opt/Qt5.7/Qt-v5.7.1-armv7l/include/QtCore -I. -I/opt/Qt5.7/Qt-v5.7.1-armv7l/mkspecs/linux-arm-gnueabi-g++ -o helloworld.o helloworld.cpp arm-linux-gnueabi-g++ -Wl,-O1 -Wl,-rpath,/opt/Qt5.7/Qt-v5.7.1-armv7l/lib -o helloworld helloworld.o   -L/opt/Qt5.7/Qt-v5.7.1-armv7l/lib -lQt5Widgets -lQt5Gui -lQt5Core -lpthread  

Other debug info:

patel@11:04:06~$file helloworld helloworld: ELF 32-bit LSB executable, ARM, EABI5 version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux.so.3, for GNU/Linux 3.2.0, BuildID[sha1]=e4f5148d70a7ad793c951f68b398ee7f9a4d9069, not stripped patel@11:04:11~$readelf -a helloworld | grep interpreter       [Requesting program interpreter: /lib/ld-linux.so.3] patel@11:04:45~$objdump -x helloworld | grep NEEDED   NEEDED               libQt5Widgets.so.5   NEEDED               libQt5Core.so.5   NEEDED               libstdc++.so.6   NEEDED               libc.so.6   NEEDED               ld-linux.so.3 

SCP the file to the target ARM board and trying to run it.

root@dra7xx-evm:~# ls -l -rwxr-xr-x    1 root     root         16792 Oct  7 15:07 helloworld -rwxr-xr-x    1 root     root          9784 Oct  7 14:22 helloworld-arm -rwxr-xr-x    1 root     root          9784 Oct  7 14:21 helloworld-gcc -rwxr-xr-x    1 root     root         16792 Oct  7 15:06 helloworld-qt  root@dra7xx-evm:~# ./helloworld -sh: ./helloworld: No such file or directory 

This post had a similar problem to mine and I did try creating a symlink for ld-linux.so.3 like this and tried to run again -

root@dra7xx-evm:/lib# ln -s ld-2.21.so ld-linux.so.3 root@dra7xx-evm:/lib# cd - root@dra7xx-evm:~# ./helloworld Segmentation fault (core dumped) 

What am I doing wrong here or missing any lib?

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!