Qt 5.2 RC1“执行格式错误”:虚拟 Ubuntu 13.04 上的 android 部署

Posted

技术标签:

【中文标题】Qt 5.2 RC1“执行格式错误”:虚拟 Ubuntu 13.04 上的 android 部署【英文标题】:Qt 5.2 RC1 "Exec format error": android deployment on virtual Ubuntu 13.04 【发布时间】:2013-12-03 08:52:07 【问题描述】:

我现在尝试了三周来让一个简单的 Hello World 应用程序在 AVD (arm) 上运行。在 Windows(64 位)下没有问题,但我想使用 Ubuntu 13.04 LTS(32 位)和 Qt 5.2 RC1 通过 VirtualBox 创建一个虚拟工作区。请不要告诉我原生使用 Qt,我知道它比较慢等等,这个工作区应该可以在多台计算机上工作,而无需每次都进行新的 Qt 设置。

我添加了 SDK、NDK、Ant 和 OpenJDK,如 this documentation 中所述。我尝试了一个 Qt Designer GUI,包括一个按钮和一个复选框,此外还有this example。

结果总是一样的:

:-1: Fehler: error trying to exec '/opt/android-ndk-r9b/toolchains/arm-linux-androideabi-4.8/prebuilt/linux-x86/bin/../lib/gcc/arm-linux-androideabi/4.8/../../../../arm-linux-androideabi/bin/as': execv: Exec format error
:-1: Fehler: [main.o] Error 1

完整的编译报告:

14:55:19: Führe Schritte für Projekt accelbubble aus...
14:55:19: Starte "/usr/bin/make" clean
rm -f qrc_accelbubble.cpp
rm -f main.o qrc_accelbubble.o
rm -f *~ core *.core
14:55:19: Der Prozess "/usr/bin/make" wurde normal beendet.
14:55:19: Unveränderte Konfiguration, qmake-Schritt wird übersprungen.
14:55:19: Starte "/usr/bin/make"
/opt/android-ndk-r9b/toolchains/arm-linux-androideabi-4.8/prebuilt/linux-x86/bin/arm-linux-androideabi-g++ -c -Wno-psabi -march=armv5te -mtune=xscale -msoft-float -ffunction-sections -funwind-tables -fstack-protector -fno-short-enums -DANDROID -Wa,--noexecstack -std=gnu++0x -g -g -gdwarf-2 -marm -O0 -fno-omit-frame-pointer -Wall -Wno-psabi -W -D_REENTRANT -fPIE -DQT_OS_ANDROID_GCC_48_WORKAROUND -DQT_QML_DEBUG -DQT_DECLARATIVE_DEBUG -DQT_QUICK_LIB -DQT_SVG_LIB -DQT_QML_LIB -DQT_WIDGETS_LIB -DQT_XML_LIB -DQT_SENSORS_LIB -DQT_NETWORK_LIB -DQT_GUI_LIB -DQT_CORE_LIB -I/opt/Qt5.2.0/5.2.0-rc1/android_armv5/mkspecs/android-g++ -I../accelbubble -I/opt/Qt5.2.0/5.2.0-rc1/android_armv5/include -I/opt/Qt5.2.0/5.2.0-rc1/android_armv5/include/QtQuick -I/opt/Qt5.2.0/5.2.0-rc1/android_armv5/include/QtSvg -I/opt/Qt5.2.0/5.2.0-rc1/android_armv5/include/QtQml -I/opt/Qt5.2.0/5.2.0-rc1/android_armv5/include/QtWidgets -I/opt/Qt5.2.0/5.2.0-rc1/android_armv5/include/QtXml -I/opt/Qt5.2.0/5.2.0-rc1/android_armv5/include/QtSensors -I/opt/Qt5.2.0/5.2.0-rc1/android_armv5/include/QtNetwork -I/opt/Qt5.2.0/5.2.0-rc1/android_armv5/include/QtGui -I/opt/Qt5.2.0/5.2.0-rc1/android_armv5/include/QtCore -I. -I/opt/android-ndk-r9b/sources/cxx-stl/gnu-libstdc++/4.8/include -I/opt/android-ndk-r9b/sources/cxx-stl/gnu-libstdc++/4.8/libs/armeabi/include -I/opt/android-ndk-r9b/platforms/android-9/arch-arm/usr/include -I. -o main.o ../accelbubble/main.cpp
arm-linux-androideabi-g++: error trying to exec '/opt/android-ndk-r9b/toolchains/arm-linux-androideabi-4.8/prebuilt/linux-x86/bin/../lib/gcc/arm-linux-androideabi/4.8/../../../../arm-linux-androideabi/bin/as': execv: Exec format error
make: *** [main.o] Error 1
14:55:25: Der Prozess "/usr/bin/make" wurde mit dem Rückgabewert 2 beendet.
Fehler beim Erstellen/Deployment des Projekts accelbubble(Kit: Android für armeabi (GCC 4.8, Qt 5.2.0))
Bei der Ausführung von Schritt 'Make'
14:55:25: Verstrichene Zeit: 00:06.

我以 root 身份运行 Qt Creator。我在各种论坛上搜索了这个问题,但找不到任何解决方案,我所做的一切最终都会再次出现这个错误,也许你可以帮助我。如果您需要更多信息,请告诉我。

问候, 克莱门斯

【问题讨论】:

为表示您的问题已解决,您需要在下方发布答案,然后将其标记为“已接受”并在其旁边打上绿色复选标记。 【参考方案1】:

我遇到了类似的问题。我的问题出在 ndk 文件夹中。我以错误的方式提取了下载的tar.bz2 文件,导致链接断开。尝试再次下载文件,检查 md5 和,使用 gui 存档管理器解压缩文件,最后调整 qtcreator->tools->options->Android 中的 ndk 文件夹。希望这会有所帮助

【讨论】:

以上是关于Qt 5.2 RC1“执行格式错误”:虚拟 Ubuntu 13.04 上的 android 部署的主要内容,如果未能解决你的问题,请参考以下文章

在虚拟机内的 nfs 共享目录中编译时执行格式错误

在 Qt 5.2 中替代 QHttp

如何在VS2012下静态构建Qt 4.8/5.2,使用静态MSVC运行时,支持Windows XP?

Android Hello World Qt 5.2

Qt 5.2 和 5.10 上 OpenGL 的差异

编译 private.hpp OpenCV 3.0.0-rc1 时出错