C++ &引用;“非法指令”;尝试在Raspberry Pi(Windows)上运行交叉编译的Qt时
我已经找到并阅读了线程,不幸的是,它仍然没有解决。(尽管我使用了该线程中的所有提示,尽可能多地提供信息)C++ &引用;“非法指令”;尝试在Raspberry Pi(Windows)上运行交叉编译的Qt时,c++,qt,raspberry-pi,cross-compiling,toolchain,C++,Qt,Raspberry Pi,Cross Compiling,Toolchain,我已经找到并阅读了线程,不幸的是,它仍然没有解决。(尽管我使用了该线程中的所有提示,尽可能多地提供信息) 有什么问题吗 几天来,我一直在试图找到一种能够交叉编译Qt的方法,因为我最近得到了一种方法,现在我想学习如何编写一些基本的嵌入式应用程序 我在这里学习教程: 我使用了一个干净的系统,唯一需要安装的是一些依赖项:apt get install libudev dev libinput dev libts dev libxcb*(第一次运行它时,configure说缺少 图书馆馆长 分别从2
有什么问题吗 几天来,我一直在试图找到一种能够交叉编译Qt的方法,因为我最近得到了一种方法,现在我想学习如何编写一些基本的嵌入式应用程序 我在这里学习教程:
- 我使用了一个干净的系统,唯一需要安装的是一些依赖项:
(第一次运行它时,apt get install libudev dev libinput dev libts dev libxcb*
说缺少 图书馆馆长configure
- 分别从
和2015-11-21-Raspbian-jessie
raspberry-gcc-4.9.2-r2.exe
- Qt源代码也来自上述教程中的链接(
)Qt-everywhere-opensource-src-5.5.0.tar.xz
- 我使用了相同的文件路径等,所以所有的命令都应该是好的,包括configure:
。/qt-everywhere-opensource-src-5.5.0/configure-platform win32-g++-xplatform linux-arm-gnueabi-g++-release-opengl es2-device linux-rasp-pi2-g++-sysroot C:/SysGCC/Raspberry/arm-linux-gnueabihf/sysroot-prefix/usr/local/qt5-device选项CROSS\u COMPILE=C:/SysGCC/Raspberry/bin/arm-linux-gnueabihf--qt xcb
非法指令
我还能提供什么。。。
- 下面是
输出:文件
root@raspberrypi:/usr/local/qt5/examples/opengl/cube# file cube cube: ELF 32-bit LSB executable, ARM, EABI5 version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux-armhf.so.3, for GNU/Linux 2.6.32, BuildID[sha1]=e4c51318d4ca583ace647510c9b4cddd06a34e19, stripped
- 我尝试使用
和gdb运行应用程序,然后运行gdb./cube
。输出为:run
(gdb) run Starting program: /usr/local/qt5/examples/opengl/cube/cube [Thread debugging using libthread_db enabled] Using host libthread_db library "/lib/arm-linux-gnueabihf/libthread_db.so.1". Program received signal SIGILL, Illegal instruction. 0xb6249734 in QMutex::lock() () from /usr/local/qt5/lib/libQt5Core.so.5 (gdb) Quit
<> LI> < P>编译器本身作为交叉编译——我可以在Windows上构建C++ Hello World,使用<代码> C:\Sysgcc\rasBurk\bin(Rox-GuueabiHfg++exe < /Cudio>)编译,然后在拉斯伯里上运行它。
- 我甚至能够正确地配置Qt Creator,使用
作为编译器,并且arm-linux-gnueabihf-g++.exe
作为qmake-基本opengl项目构建良好,甚至可以远程部署到raspi works:)。。。对“非法教学”的遗憾C:\SysGCC\Raspberry\arm-linux-gnueabihf\sysroot\usr\local\qt5\bin\qmake.exe
- Raspbian:
Linux raspberrypi 4.1.19+#858星期二3月15日15:52:03 GMT 2016 armv6l GNU/Linux
root@raspberrypi:/# lsb_release -a No LSB modules are available. Distributor ID: Raspbian Description: Raspbian GNU/Linux 8.0 (jessie) Release: 8.0 Codename: jessie
- Windows 7 64位
提前感谢您的帮助。当然,如果需要,我会提供任何必要的信息
说真的,我已经尝试了一个星期,在上的类似linux的东西已经失败了。不过,我真的很期待为将来在我的Raspberry上开发一个健壮的、交叉编译的、远程部署的Qt环境:)事实证明这是非常明显的。这里的教程:是为树莓皮2制作的,尽管没有明确提到它 幸运的是,您只需将配置脚本从
-device linux-rasp-pi2-g++
更改为-device linux-rasp-pi-g++
我很惊讶,但显然这对我来说非常有效
因此,现在配置行应该如下所示:
../qt-everywhere-opensource-src-5.5.0/configure -platform win32-g++ -xplatform linux-arm-gnueabi-g++ -release -opengl es2 -device linux-rasp-pi-g++ -sysroot C:/SysGCC/Raspberry/arm-linux-gnueabihf/sysroot -prefix /usr/local/qt5 -device-option CROSS_COMPILE=C:/SysGCC/Raspberry/bin/arm-linux-gnueabihf- -qt-xcb
感谢@Buggfinger的提示:)
注:如果你不知道你有哪个版本的RPi(我一点也不确定),你可以比较规格和外围设备,或者嘿,伙计,如果你找到了解决方案,请随时通知我们,我在这里使用本教程从Linux交叉编译同样的内容:你可以尝试在你的raspi上运行raspi配置,然后“高级选项”->“GL驱动程序”。我无法启用GL驱动程序,因为设备不支持它,这导致我检查印制在电路板上的版本号。RASPI1b+v1.2在这里不起作用。插入我的另一个raspi(2BV1.1)工作得很好。好吧,当我运行“qopenglwidget”示例时,什么也没有发生,但是“非法指令”已经消失了。因此,这可能是一个错误的RasPi的工作。