我试图按照这条指令在pi3上构建qt 5.7.1: https://wiki.qt.io/Native_Build_of_Qt_5.4.1_on_a_Raspberry_Pi
我使用的源包是: QT-无处不开源-SRC-5.7.1.tar
配置为:
./ configure -v -opengl es2 -force-pkg-config -device linux-rpi3-g ++ -device-option CROSS_COMPILE = / usr / bin / -opensource -confirm-license -optimized-qmake -reduce-exports - release -qt-pcre -qt-xcb -make libs -no-use-gold-linker -prefix / usr / local / qt5
该指令正在使用" linux-rasp-pi-g ++",但我认为它应该是rpi3的linux-rpi3-g ++。
制作,我得到的错误如下:
/ usr / bin / g ++ -Wl,-rpath-link,/ opt / vc / lib -Wl,-rpath-link,/ usr / lib / arm-linux-gnueabihf -Wl,-rpath-link,/ lib / arm-linux-gnueabihf -mfloat-abi = hard -Wl, - gc-sections -Wl ,-O1 -Wl, - enable-new-dtags -Wl,-z,origin -Wl,-rpath,\ $ ORIGIN /../ lib -Wl,-rpath-link,/ home / pi / download / qt -everywhere-开源-SRC-5.7.1 / qtdeclarative / lib中 -Wl,-rpath链接,/家庭/ PI /下载/ QT-比比皆是 - 开源-SRC-5.7.1 / qtbase / lib目录 -o ../../bin/qmltestrunner .obj / main.o -L / home / pi / download / qt-everywhere-opensource-src-5.7.1 / qtdeclarative / lib -lQt5QuickTest -L / home / pi / download / qt-everywhere-opensource-src-5.7.1 / qtbase / lib -lQt5Widgets -lQt5Gui -lQt5Qml -lQt5Network -lQt5Test -lQt5Core -lGLESv2 -lpthread / usr / lib / arm-linux -gnueabihf / libQt5Quick.so.5:对
QV8Engine::toVariant(QV4::ValueRef, int)' /usr/lib/arm-linux-gnueabihf/libQt5Quick.so.5: undefined reference to
QQmlProfilerService :: dataReady(QQmlAbstractProfilerAdapter *)'的未定义引用 /usr/lib/arm-linux-gnueabihf/libQt5Quick.so.5:未定义的引用QV4::ExecutionContext::throwTypeError()' /usr/lib/arm-linux-gnueabihf/libQt5Quick.so.5: undefined reference to
QV4 :: Object :: markObjects(QV4 :: Managed *,QV4 :: ExecutionEngine *)' /usr/lib/arm-linux-gnueabihf/libQt5Quick.so.5:未定义的引用QQmlEngineDebugService::instance()' /usr/lib/arm-linux-gnueabihf/libQt5Quick.so.5: undefined reference to
QV8Engine :: fromVariant(QVariant const&)' /usr/lib/arm-linux-gnueabihf/libQt5Quick.so.5:未定义的引用QV4::PersistentValue::operator=(unsigned long long)' /usr/lib/arm-linux-gnueabihf/libQt5Quick.so.5: undefined reference to
QQmlValueType :: qt_metacast(char const *)' /home/pi/download/qt-everywhere-opensource-src-5.7.1/qtdeclarative/lib/libQt5QuickTest.so:未定义引用QQuickItem::y() const@Qt_5' /home/pi/download/qt-everywhere-opensource-src-5.7.1/qtdeclarative/lib/libQt5QuickTest.so: undefined reference to
QQuickView :: errors()const @ Qt_5' /usr/lib/arm-linux-gnueabihf/libQt5Quick.so.5:未定义的引用QV4::Managed::engine() const' /usr/lib/arm-linux-gnueabihf/libQt5Quick.so.5: undefined reference to
QV4 :: ExecutionEngine :: newErrorObject(QV4 :: ValueRef)' /usr/lib/arm-linux-gnueabihf/libQt5Quick.so.5:未定义的引用QQmlBinding::property() const' /usr/lib/arm-linux-gnueabihf/libQt5Quick.so.5: undefined reference to
QQmlCustomParser :: bindingIdentifier(QV4 :: CompiledData ::绑定 常量*)' /usr/lib/arm-linux-gnueabihf/libQt5Quick.so.5:undefined 引用QV4::ExecutionContext::throwError(QString const&)' /usr/lib/arm-linux-gnueabihf/libQt5Quick.so.5: undefined reference to
QQmlBinding :: Invalid' /usr/lib/arm-linux-gnueabihf/libQt5Quick.so.5: 未定义引用QQmlAbstractBinding::vTables' /usr/lib/arm-linux-gnueabihf/libQt5Quick.so.5: undefined reference to
QV4 :: ExecutionContext :: throwError(QV4 :: ValueRef)' /usr/lib/arm-linux-gnueabihf/libQt5Quick.so.5:未定义的引用QV4::Object::call(QV4::Managed*, QV4::CallData*)' /usr/lib/arm-linux-gnueabihf/libQt5Quick.so.5: undefined reference to
QQmlBinding :: createBinding(int,QObject *,QQmlContext *)' /usr/lib/arm-linux-gnueabihf/libQt5Quick.so.5:未定义的引用QV4::Managed::operator new(unsigned int, QV4::MemoryManager*)' /home/pi/download/qt-everywhere-opensource-src-5.7.1/qtdeclarative/lib/libQt5QuickTest.so: undefined reference to
QQuickItem :: height()const @ Qt_5' /usr/lib/arm-linux-gnueabihf/libQt5Quick.so.5:未定义的引用QV4::Object::setLookup(QV4::Managed*, QV4::Lookup*, QV4::ValueRef)' /usr/lib/arm-linux-gnueabihf/libQt5Quick.so.5: undefined reference to
QV4 :: PersistentValue :: PersistentValue(QV4 :: ValueRef)' /usr/lib/arm-linux-gnueabihf/libQt5Quick.so.5:未定义的引用QQmlValueType::qt_metacall(QMetaObject::Call, int, void**)' /usr/lib/arm-linux-gnueabihf/libQt5Quick.so.5: undefined reference to
QQmlProfilerService :: addGlobalProfiler(QQmlAbstractProfilerAdapter *)' /home/pi/download/qt-everywhere-opensource-src-5.7.1/qtdeclarative/lib/libQt5QuickTest.so:对QQuickView::QQuickView(QWindow*)@Qt_5' /usr/lib/arm-linux-gnueabihf/libQt5Quick.so.5: undefined reference to
的未定义引用QV4 :: Object :: putIndexed(QV4 :: Managed *,unsigned int,QV4 :: ValueRef)' /usr/lib/arm-linux-gnueabihf/libQt5Quick.so.5:未定义的引用QV4::Object::put(QV4::Managed*, QV4::StringRef, QV4::ValueRef)' /usr/lib/arm-linux-gnueabihf/libQt5Quick.so.5: undefined reference to
QV4:对象::对象(QV4 :: ExecutionEngine *)' /usr/lib/arm-linux-gnueabihf/libQt5Quick.so.5:未定义的引用QQmlValueType::staticMetaObject' /usr/lib/arm-linux-gnueabihf/libQt5Quick.so.5: undefined reference to
QShortcutMap :: tryShortcutEvent(QObject *,QKeyEvent *)' /usr/lib/arm-linux-gnueabihf/libQt5Quick.so.5:未定义的引用QQmlProfilerService::instance()' /home/pi/download/qt-everywhere-opensource-src-5.7.1/qtdeclarative/lib/libQt5QuickTest.so: undefined reference to
QQuickView :: engine()const @ Qt_5' /usr/lib/arm-linux-gnueabihf/libQt5Quick.so.5:未定义的引用QV4::Object::getLookup(QV4::Managed*, QV4::Lookup*)' /home/pi/download/qt-everywhere-opensource-src-5.7.1/qtdeclarative/lib/libQt5QuickTest.so: undefined reference to
QQuickView :: setSource(QUrl const&)@ Qt_5' /usr/lib/arm-linux-gnueabihf/libQt5Quick.so.5:未定义的引用QV4::PersistentValue::operator=(QV4::ValueRef)' /usr/lib/arm-linux-gnueabihf/libQt5Quick.so.5: undefined reference to
QV4 :: ArrayData :: realloc(QV4 :: Object *,QV4 :: ArrayData :: Type,unsigned int,unsigned int,bool)' /usr/lib/arm-linux-gnueabihf/libQt5Quick.so.5:未定义的引用QQmlInspectorService::addView(QObject*)' /usr/lib/arm-linux-gnueabihf/libQt5Quick.so.5: undefined reference to
QQmlPropertyPrivate :: setBinding(QQmlProperty const&amp ;,, QQmlAbstractBinding *,QFlags)' /usr/lib/arm-linux-gnueabihf/libQt5Quick.so.5:未定义的引用QQmlComponentPrivate::initializeObjectWithInitialProperties(QV4::ValueRef, QV4::ValueRef, QObject*)' /home/pi/download/qt-everywhere-opensource-src-5.7.1/qtdeclarative/lib/libQt5QuickTest.so: undefined reference to
QQuickItem :: staticMetaObject @ Qt_5' /usr/lib/arm-linux-gnueabihf/libQt5Quick.so.5:未定义的引用QQmlValueType::QQmlValueType(int, QObject*)' /home/pi/download/qt-everywhere-opensource-src-5.7.1/qtdeclarative/lib/libQt5QuickTest.so: undefined reference to
QQuickItem :: x()const @ Qt_5&#39; /usr/lib/arm-linux-gnueabihf/libQt5Quick.so.5:未定义的引用QQmlDebugStream::QQmlDebugStream(QByteArray*, QFlags<QIODevice::OpenModeFlag>)' /home/pi/download/qt-everywhere-opensource-src-5.7.1/qtdeclarative/lib/libQt5QuickTest.so: undefined reference to
QQuickItem :: window()const @ Qt_5&#39; /usr/lib/arm-linux-gnueabihf/libQt5Quick.so.5:未定义的引用QV4::Object::~Object()' /home/pi/download/qt-everywhere-opensource-src-5.7.1/qtdeclarative/lib/libQt5QuickTest.so: undefined reference to
QQuickItem :: mapToScene(QPointF const&amp;) 常量@ Qt_5&#39; /usr/lib/arm-linux-gnueabihf/libQt5Quick.so.5:undefined 引用QV4::Object::deleteProperty(QV4::Managed*, QV4::StringRef)' /home/pi/download/qt-everywhere-opensource-src-5.7.1/qtdeclarative/lib/libQt5QuickTest.so: undefined reference to
QQuickView :: rootContext()const @ Qt_5&#39; /usr/lib/arm-linux-gnueabihf/libQt5Quick.so.5:未定义的引用QV4::Object::getIndexed(QV4::Managed*, unsigned int, bool*)' /usr/lib/arm-linux-gnueabihf/libQt5Quick.so.5: undefined reference to
QQmlDebugService :: isDebuggingEnabled()&#39; /usr/lib/arm-linux-gnueabihf/libQt5Quick.so.5:未定义的引用QV4::Object::destroy(QV4::Managed*)' /home/pi/download/qt-everywhere-opensource-src-5.7.1/qtdeclarative/lib/libQt5QuickTest.so: undefined reference to
QQuickWindow :: grabWindow()@ Qt_5&#39; /usr/lib/arm-linux-gnueabihf/libQt5Quick.so.5:未定义的引用QQmlValueType::metaObject() const' /usr/lib/arm-linux-gnueabihf/libQt5Quick.so.5: undefined reference to
QQmlAbstractBinding :: weakPointer()&#39; /usr/lib/arm-linux-gnueabihf/libQt5Quick.so.5:未定义的引用QV4::Object::get(QV4::Managed*, QV4::StringRef, bool*)' /usr/lib/arm-linux-gnueabihf/libQt5Quick.so.5: undefined reference to
QOpenGLContextPrivate :: globalShareContext()&#39; /usr/lib/arm-linux-gnueabihf/libQt5Quick.so.5:未定义的引用QV4::Managed::setVTable(QV4::ManagedVTable const*)' /usr/lib/arm-linux-gnueabihf/libQt5Quick.so.5: undefined reference to
QQmlEngineDebugService :: setStatesDelegate(QQmlDebugStatesDelegate *)&#39; /home/pi/download/qt-everywhere-opensource-src-5.7.1/qtdeclarative/lib/libQt5QuickTest.so:QQuickView::status() const@Qt_5' /usr/lib/arm-linux-gnueabihf/libQt5Quick.so.5: undefined reference to
QV4 :: Object :: construct的未定义引用(QV4 :: Managed *,QV4 :: CallData *)&#39; /usr/lib/arm-linux-gnueabihf/libQt5Quick.so.5:未定义的引用QQmlInspectorService::instance()' /usr/lib/arm-linux-gnueabihf/libQt5Quick.so.5: undefined reference to
QV4 :: Object :: query(QV4 :: Managed const *,QV4 :: StringRef)&#39; /home/pi/download/qt-everywhere-opensource-src-5.7.1/qtdeclarative/lib/libQt5QuickTest.so:对QQuickItem::width() const@Qt_5' /usr/lib/arm-linux-gnueabihf/libQt5Quick.so.5: undefined reference to
的未定义引用QV4 :: Object :: defineAccessorProperty(QV4 :: StringRef,unsigned long long()(QV4 :: CallContext ),unsigned long long ()(QV4 :: CallContext中))&#39; /usr/lib/arm-linux-gnueabihf/libQt5Quick.so.5:未定义的引用QV4::Object::advanceIterator(QV4::Managed*, QV4::ObjectIterator*, QV4::StringRef, unsigned int*, QV4::Property*, QV4::PropertyAttributes*)' /usr/lib/arm-linux-gnueabihf/libQt5Quick.so.5: undefined reference to
QV4 :: String :: simplifyString()const&#39; /usr/lib/arm-linux-gnueabihf/libQt5Quick.so.5:未定义的引用 `QQmlInspectorService :: removeView(QObject的*)&#39; collect2:错误:ld 返回1退出状态Makefile:108:目标配方 &#39; ../../仓/ qmltestrunner&#39;失败了[3]: * [../../bin/qmltestrunner]错误1 make [3]:离开目录 &#39; /home/pi/download/qt-everywhere-opensource-src-5.7.1/qtdeclarative/tools/qmltestrunner' Makefile:276:目标&#39; sub-qmltestrunner-make_first&#39;的配方失败 make [2]:* [sub-qmltestrunner-make_first]错误2
那么,我该如何解决这个问题?
感谢。
答案 0 :(得分:4)
我已经解决了这个问题,现在又出现了一个新问题。
在pi上本地构建qt之前,我安装了qt: sudo apt-get install qt5-default,以及其他qt5包。
虽然我有: sudo apt-get删除那些包,它可能仍然有效。
所以我格式化了SD卡并重新烧毁了Raspbian图像,按照说明进行了操作,#34; make&#34;,问题就消失了。
但现在我有另一个问题。
当我&#34; make install&#34;时,我收到此错误:
/ usr / bin / g ++ -Wl,-rpath-link,/ opt / vc / lib -Wl,-rpath-link,/ usr / lib / arm-linux-gnueabihf -Wl,-rpath-link,/ lib / arm-linux-gnueabihf -mfloat-abi = hard -Wl,-O1 -Wl, - enable-new-dtags -Wl,-z,origin -Wl,-rpath,\ $ ORIGIN /../ .. / lib -shared -o libdeclarative_location.so .obj / location.o .obj / qdeclarativegeomapitemview.o .obj / qdeclarativegeoserviceprovider.o .obj / qdeclarativegeocodemodel.o .obj / qdeclarativegeorouodeodel.o .obj / qdeclarativegeoroute.o .obj / qdeclarativegeorousesegment。 o .obj / qdeclarativegeomaneuver.o .obj / qdeclarativegeomap.o .obj / qdeclarativegeomaptype.o .obj / qdeclarativegeomapitembase.o .obj / qdeclarativegeomapquickitem.o .obj / qdeclarativecirclemapitem.o .obj / qdeclarativerectanglemapitem.o .obj / qdeclarativepolygonmapitem.o。 obj / qdeclarativepolylinemapitem.o .obj / qdeclarativeroutemapitem.o .obj / qgeomapitemgeometry.o .obj / qdeclarativegeomapcopyrightsnotice.o .obj / error_messages.o .obj / locationvaluetypehelper.o .obj / qquickgeomapgesturearea.o .obj / qquickgeocoordinateanimation.o .obj / MAPI temviewdelegateincubator.o .obj / qdeclarativeplacecontentmodel.o .obj / qdeclarativesupportedcategoriesmodel.o .obj / qdeclarativesearchsuggestionmodel.o .obj / qdeclarativesearchresultmodel.o .obj / qdeclarativereviewmodel.o .obj / qdeclarativeplaceimagemodel.o .obj / qdeclarativeplaceeditorialmodel.o .obj / qdeclarativecontactdetail。 o .obj / qdeclarativecategory.o .obj / qdeclarativeplace.o .obj / qdeclarativeplaceattribute.o .obj / qdeclarativeplaceicon.o .obj / qdeclarativeplaceuser.o .obj / qdeclarativeratings.o .obj / qdeclarativesupplier.o .obj / qdeclarativesearchmodelbase.o。 OBJ / moc_qdeclarativecirclemapitem_p.o .OBJ / moc_qdeclarativerectanglemapitem_p.o .OBJ / moc_qdeclarativepolygonmapitem_p.o .OBJ / moc_qdeclarativepolylinemapitem_p.o .OBJ / moc_qdeclarativeroutemapitem_p.o .OBJ / moc_qdeclarativegeomapcopyrightsnotice_p.o .OBJ / moc_qquickgeocoordinateanimation_p.o .OBJ / moc_qdeclarativeplacecontentmodel.o的obj / moc_qdeclarativesupportedcategoriesmodel_p.o .obj / moc_qdeclarativesearchsuggestionmodel_p.o .obj / moc_qdec larativesearchresultmodel_p.o .OBJ / moc_qdeclarativereviewmodel_p.o .OBJ / moc_qdeclarativeplaceimagemodel_p.o .OBJ / moc_qdeclarativeplaceeditorialmodel.o .OBJ / moc_qdeclarativecontactdetail_p.o .OBJ / moc_qdeclarativecategory_p.o .OBJ / moc_qdeclarativeplace_p.o .OBJ / moc_qdeclarativeplaceattribute_p.o .OBJ / moc_qdeclarativeplaceicon_p。 o .obj / moc_qdeclarativeplaceuser_p.o .obj / moc_qdeclarativeratings_p.o .obj / moc_qdeclarativesupplier_p.o .obj / moc_qdeclarativesearchmodelbase.o -L = / opt / vc / lib -L / home / pi / download / qt-everywhere-opensource-src -5.7.1 / qtlocation / lib -lQt5Location -L / home / pi / download / qt-everywhere-opensource-src-5.7.1 / qtbase / lib -L / home / pi / download / qt-everywhere-opensource-src -5.7.1 / qtdeclarative / lib -lQt5Quick -lQt5Gui -lQt5Qml -lQt5Network -lQt5Positioning -lQt5Core -Wl,-rpath-link,/ opt / vc / lib -lGLESv2 -lpthread -lclip2tri -L / home / pi / download / qt -everywhere-opensource-src-5.7.1 / qtlocation / lib -lpoly2tri -lclipper
/ usr / bin / ld:找不到-lclip2tri
/ usr / bin / ld:找不到-lpoly2tri
/ usr / bin / ld:找不到-lclipper
collect2:错误:ld返回1退出状态
Makefile:273:目标配方&#39; ../../../ qml / QtLocation / libdeclarative_location.so&#39;失败
make [4]:*** [../../../qml/QtLocation/libdeclarative_location.so]错误1 make [4]:离开目录&#39; /home/pi/download/qt-everywhere-opensource-src-5.7.1/qtlocation/src/imports/location'
Makefile:80:目标配方&sub-location-install_subtargets&#39;失败
make [3]:*** [sub-location-install_subtargets]错误2
make [3]:离开目录&#39; /home/pi/download/qt-everywhere-opensource-src-5.7.1/qtlocation/src/imports'
Makefile:135:目标配方&sub-imports-install_subtargets&#39;失败
make [2]:*** [sub-imports-install_subtargets]错误2
make [2]:离开目录&#39; /home/pi/download/qt-everywhere-opensource-src-5.7.1/qtlocation/src'
Makefile:56:目标&#39; sub-src-install_subtargets&#39;的配方失败
make [1]:*** [sub-src-install_subtargets]错误2
make [1]:离开目录&#39; /home/pi/download/qt-everywhere-opensource-src-5.7.1/qtlocation'
Makefile:844:目标&#39; module-qtlocation-install_subtargets&#39;的配方失败
make:*** [module-qtlocation-install_subtargets]错误2
我发现qtlocation / src / 3rdparty
中有3个目录clip2tri
clipper
poly2tri
和qtlocation / lib中的3个文件:
libclip2tri.prl
libclipper.prl
libpoly2tri.prl
但没有lib文件。
我检查了构建日志,看来在directoriy qtlocation / src / 3rdparty中的cpp文件没有编译,
cd 3rdparty /&amp;&amp; (test -e Makefile || /home/pi/download/qt-everywhere-opensource-src-5.7.1/qtbase/bin/qmake /home/pi/download/qt-everywhere-opensource-src-5.7.1/ qtlocation / src / 3rdparty / 3rdparty.pro -qtconf /home/pi/download/qt-everywhere-opensource-src-5.7.1/qtbase/bin/qt.conf -o Makefile)&amp;&amp; make -f Makefile安装 make [3]:输入目录&#39; /home/pi/download/qt-everywhere-opensource-src-5.7.1/qtlocation/src/3rdparty'
cd poly2tri /&amp;&amp; (test -e Makefile || /home/pi/download/qt-everywhere-opensource-src-5.7.1/qtbase/bin/qmake /home/pi/download/qt-everywhere-opensource-src-5.7.1/ qtlocation / src / 3rdparty / poly2tri / poly2tri.pro -qtconf /home/pi/download/qt-everywhere-opensource-src-5.7.1/qtbase/bin/qt.conf -o Makefile)&amp;&amp; make -f Makefile install
make [4]:输入目录&#39; /home/pi/download/qt-everywhere-opensource-src-5.7.1/ qtlocation / src / 3rdparty / poly2tri &#39 ;
make [4]:无法安装&#39; 。
make [4]:离开目录&#39; /home/pi/download/qt-everywhere-opensource-src-5.7.1/ qtlocation / src / 3rdparty / poly2tri &#39 ;
cd clipper /&amp;&amp; (test -e Makefile || /home/pi/download/qt-everywhere-opensource-src-5.7.1/qtbase/bin/qmake /home/pi/download/qt-everywhere-opensource-src-5.7.1/ qtlocation / src / 3rdparty / clipper / clipper.pro -qtconf /home/pi/download/qt-everywhere-opensource-src-5.7.1/qtbase/bin/qt.conf -o Makefile)&amp;&amp; make -f Makefile install
make [4]:输入目录&#39; /home/pi/download/qt-everywhere-opensource-src-5.7.1/ qtlocation / src / 3rdparty / clipper&#39;
make [4]:无法安装&#39; 。
make [4]:离开目录&#39; /home/pi/download/qt-everywhere-opensource-src-5.7.1/ qtlocation / src / 3rdparty / clipper&#39;
cd clip2tri /&amp;&amp; (test -e Makefile || /home/pi/download/qt-everywhere-opensource-src-5.7.1/qtbase/bin/qmake /home/pi/download/qt-everywhere-opensource-src-5.7.1/ qtlocation / src / 3rdparty / clip2tri / clip2tri.pro -qtconf /home/pi/download/qt-everywhere-opensource-src-5.7.1/qtbase/bin/qt.conf -o Makefile)&amp;&amp; make -f Makefile install
make [4]:输入目录&#39; /home/pi/download/qt-everywhere-opensource-src-5.7.1/ qtlocation / src / 3rdparty / clip2tri&#39;
make [4]:无法安装&#39;安装&#39;
make [4]:离开目录&#39; /home/pi/download/qt-everywhere-opensource-src-5.7.1/qtlocation/src/3rdparty/clip2tri'
make [3]:离开目录&#39; /home/pi/download/qt-everywhere-opensource-src-5.7.1/qtlocation/src/3rdparty'
cd location /&amp;&amp; (test -e Makefile || /home/pi/download/qt-everywhere-opensource-src-5.7.1/qtbase/bin/qmake /home/pi/download/qt-everywhere-opensource-src-5.7.1/ qtlocation / src / location / location.pro -qtconf /home/pi/download/qt-everywhere-opensource-src-5.7.1/qtbase/bin/qt.conf -o Makefile)&amp;&amp; make -f Makefile安装 make [3]:输入目录&#39; /home/pi/download/qt-everywhere-opensource-src-5.7.1/qtlocation/src/location'