编译Qt for Android,而不是" Qt for Android"

时间:2016-04-22 14:04:52

标签: android qt cross-compiling

让我解释一下这个神秘的标题:我目前在尝试编译Qt 5.6时遇到了很多麻烦,以便在Android上使用它。我不想做的是编写Qt来编写Android应用程序,如Qt wikidocs中所述。我没有问题,但这不是我想要的。相反,我的目标是交叉编译它,就像我在RasPi或Beaglebone上使用它(例如)一样。

这是我的.configure命令,Qt源代码和构建目录位于/opt/qt/中的Android NDK,/opt/android/ndk/

./configure -device linux-arm-generic-g++ -device-option \
CROSS_COMPILE=/opt/android/ndk/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64/bin/arm-linux-androideabi- \
-sysroot /opt/android/ndk/platforms/android-21/arch-arm \
-extprefix /opt/qt/android/target -hostprefix /opt/qt/android/host \
-opensource -confirm-license -opengl es2 -eglfs -no-xcb \
-skip qtwebkit -skip qtwinextras -skip qtx11extras -skip qtscript \
-skip qtactiveqt -skip qtmacextras -skip qtquick1 -v \
-I/opt/android/ndk/sources/cxx-stl/gnu-libstdc++/4.9/include \
-I/opt/android/ndk/sources/cxx-stl/gnu-libstdc++/4.9/libs/armeabi/include \
-L/opt/android/ndk/sources/cxx-stl/gnu-libstdc++/4.9/libs/armeabi/

这会引发以下错误(缩减为相关位):

error: undefined reference to 'std::_Rb_tree_decrement(std::_Rb_tree_node_base*)'
error: undefined reference to '__cxa_begin_catch'
error: undefined reference to '__cxa_rethrow'
error: undefined reference to '__cxa_end_catch'
error: undefined reference to '__cxa_end_cleanup'
error: undefined reference to 'std::ios_base::Init::Init()'
error: undefined reference to 'std::ios_base::Init::~Init()'
error: undefined reference to '__gxx_personality_v0'
collect2: error: ld returned 1 exit status
Makefile:89: recipe for target 'stl' failed
make: *** [stl] Error 1
STL disabled.
STL functionality check failed! Cannot build Qt with this STL library.

正如您所看到的,.configure因未定义的引用错误而失败,这通常指向未链接的库。但是我错过了哪些?

我已经遇到了一些错误,并且能够通过网络搜索来解决这些错误,但我不知道如何从这里开始。关于交叉编译和从我不熟悉的项目构建大型代码库,我不是新手,但这让我很难过。

有人成功地按照我打算的方式编译Qt吗?有人可以共享配置设置或告诉我是否在我的中发现了明显错误吗?

我希望有人可以提前感谢大家!

0 个答案:

没有答案