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./cube
    gdb运行应用程序,然后运行
    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
    作为编译器,并且
    C:\SysGCC\Raspberry\arm-linux-gnueabihf\sysroot\usr\local\qt5\bin\qmake.exe
    作为qmake-基本opengl项目构建良好,甚至可以远程部署到raspi works:)。。。对“非法教学”的遗憾

  • 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的工作。