嗨,
我正在根据这篇文章为 Lichee Pi zero v3s 板进行编译
https://licheezero.readthedocs.io/zh/latest/%E5%BA%94%E7%94%A8/QT_doc2.html
目前cfg_arm.sh文件如下:
#!/bin/bash
set -e
QT_VERSION=5.9.1
BUILDROOT_PATH=/home/parsaeeyan/ktclicheepi/buildroot-2022.02.9
SYSROOT=$BUILDROOT_PATH/output/host/arm-buildroot-linux-gnueabihf/sysroot
TOOLCHAIN_PATH=$BUILDROOT_PATH/output/host/bin
TSLIB_ROOT=/opt/tslib
QT_INSTALL_PREFIX=/opt/qt${QT_VERSION}-arm
QT_SOURCE_DIR=~/NLC2/qt5/${QT_VERSION}
export SYSROOT
export PATH=$TOOLCHAIN_PATH:$PATH
export CFLAGS="--sysroot=$SYSROOT -march=armv7-a -mfpu=vfpv3-d16 -mfloat-abi=hard"
export CXXFLAGS="$CFLAGS"
export LDFLAGS="$CFLAGS -Wl,--no-undefined -latomic -lrt -ldl -lpthread -lz -fuse-ld=bfd"
export CC="arm-linux-gnueabihf-gcc --sysroot=$SYSROOT"
export CXX="arm-linux-gnueabihf-g++ --sysroot=$SYSROOT"
export PKG_CONFIG_PATH=$SYSROOT/usr/lib/pkgconfig:$PKG_CONFIG_PATH
export LIBS="-lz -lsqlite3"
export TSLIB_LIBDIR=$TSLIB_ROOT/lib
export TSLIB_INCLUDEDIR=$TSLIB_ROOT/include
export LD_LIBRARY_PATH=$TSLIB_LIBDIR:$LD_LIBRARY_PATH
export CROSS_COMPILE=arm-linux-gnueabihf-
# Configure
./configure -verbose \
-prefix $QT_INSTALL_PREFIX \
-sysroot $SYSROOT \
-confirm-license -opensource -release \
-make libs \
-xplatform linux-arm-gnueabi-g++ \
-optimized-qmake -pch \
-sql-sqlite \
-qt-libjpeg -qt-libpng -qt-zlib \
-no-opengl -no-sse2 -no-openssl -no-cups -no-glib -no-dbus -no-xcb -no-separate-debug-info \
-skip qtmacextras \
-skip qtanroidextras \
-skip qtwinextras \
-skip qtx11extras \
-I$TSLIB_INCLUDEDIR -L$TSLIB_LIBDIR \
-I$SYSROOT/usr/include -L$SYSROOT/usr/lib \
-make examples -make tools -nomake tests -no-iconv \
-skip qtwayland -skip qt3d \
-no-use-gold-linker
# Compile
sudo make -j$(nproc)
# Install
sudo make install
echo "Qt $QT_VERSION build and installation for Lichee Pi completed successfully."
qmake.conf文件如下:
GNU nano 4.8 qtbase/mkspecs/linux-arm-gnueabi-g++/qmake.conf
#
# qmake configuration for building with arm-linux-gnueabi-g++
#
MAKEFILE_GENERATOR = UNIX
CONFIG += incremental
QMAKE_INCREMENTAL_STYLE = sublib
include(../common/linux.conf)
include(../common/gcc-base-unix.conf)
include(../common/g++-unix.conf)
# modifications to g++.conf
QMAKE_CC = arm-linux-gnueabi-gcc
QMAKE_CXX = arm-linux-gnueabi-g++
QMAKE_LINK = arm-linux-gnueabi-g++
QMAKE_LINK_SHLIB = arm-linux-gnueabi-g++
# modifications to linux.conf
QMAKE_AR = arm-linux-gnueabi-ar cqs
QMAKE_OBJCOPY = arm-linux-gnueabi-objcopy
QMAKE_NM = arm-linux-gnueabi-nm -P
QMAKE_STRIP = arm-linux-gnueabi-strip
QT_QPA_DEFAULT_PLATFORM = linuxfb
QMAKE_CFLAGS_RELEASE += -O2 -march=armv7-a -lts
QMAKE_CXXFLAGS_RELEASE += -O2 -march=armv7-a -lts
#QMAKE_INCDIR += /opt/tslib/include /opt/sqlite3/include
#QMAKE_LIBDIR += /opt/tslib/lib /opt/sqlite3/lib
QMAKE_INCDIR += /home/parsaeeyan/ktclicheepi/buildroot-2022.02.9/output/host/arm-buildroot-linux-gnueabihf/sysroot/usr/lib
QMAKE_LIBDIR += /home/parsaeeyan/ktclicheepi/buildroot-2022.02.9/output/host/arm-buildroot-linux-gnueabihf/sysroot/usr/include
QMAKE_LFLAGS += -Wl,--no-undefined -latomic -lrt -ldl -lpthread
load(qt_config)
我遇到的问题是,在 make 时出现此错误:
arm-linux-gnueabi-g++ --sysroot=/home/parsaeeyan/ktclicheepi/buildroot-2022.02.9/output/host/arm-buildroot-linux-gnueabihf/sysroot -Wl,--no-undefined -Wl,--version-script,QtNetwork.version -Wl,-O1 -Wl,--enable-new-dtags -Wl,-z,origin -Wl,-rpath,\$ORIGIN -shared -Wl,-soname,libQt5Network.so.5 -o libQt5Network.so.5.9.1 .obj/qftp.o .obj/qhttpnetworkheader.o .obj/qhttpnetworkrequest.o .obj/qhttpnetworkreply.o .obj/qhttpnetworkconnection.o .obj/qhttpnetworkconnectionchannel.o .obj/qabstractprotocolhandler.o .obj/qhttpprotocolhandler.o .obj/qspdyprotocolhandler.o .obj/qnetworkaccessauthenticationmanager.o .obj/qnetworkaccessmanager.o .obj/qnetworkaccesscache.o .obj/qnetworkaccessbackend.o .obj/qnetworkaccessdebugpipebackend.o .obj/qnetworkaccessfilebackend.o .obj/qnetworkaccesscachebackend.o .obj/qnetworkaccessftpbackend.o .obj/qnetworkcookie.o .obj/qnetworkcookiejar.o .obj/qnetworkrequest.o .obj/qnetworkreply.o .obj/qnetworkreplyimpl.o .obj/qnetworkreplydataimpl.o .obj/qnetworkreplyhttpimpl.o .obj/qnetworkreplyfileimpl.o .obj/qabstractnetworkcache.o .obj/qnetworkdiskcache.o .obj/qhttpthreaddelegate.o .obj/qhttpmultipart.o .obj/qnetworkfile.o .obj/qhttp2protocolhandler.o .obj/qhsts.o .obj/qhstspolicy.o .obj/bitstreams.o .obj/huffman.o .obj/hpack.o .obj/hpacktable.o .obj/http2frames.o .obj/http2streams.o .obj/http2protocol.o .obj/qnetworksession.o .obj/qnetworkconfigmanager.o .obj/qnetworkconfiguration.o .obj/qnetworkconfigmanager_p.o .obj/qbearerengine.o .obj/qbearerplugin.o .obj/qsharednetworksession.o .obj/qauthenticator.o .obj/qdnslookup.o .obj/qhostaddress.o .obj/qhostinfo.o .obj/qnetworkdatagram.o .obj/qnetworkinterface.o .obj/qnetworkproxy.o .obj/qurlinfo.o .obj/qdnslookup_unix.o .obj/qhostinfo_unix.o .obj/qnetworkinterface_unix.o .obj/qnetworkproxy_generic.o .obj/qabstractsocketengine.o .obj/qhttpsocketengine.o .obj/qabstractsocket.o .obj/qtcpsocket.o .obj/qudpsocket.o .obj/qtcpserver.o .obj/qlocalsocket.o .obj/qlocalserver.o .obj/qsocks5socketengine.o .obj/qnativesocketengine.o .obj/qnativesocketengine_unix.o .obj/qlocalsocket_unix.o .obj/qlocalserver_unix.o .obj/moc_qhttpnetworkreply_p.o .obj/moc_qspdyprotocolhandler_p.o .obj/moc_qnetworkaccesscache_p.o .obj/moc_qnetworkaccessbackend_p.o .obj/moc_qnetworkaccessdebugpipebackend_p.o .obj/moc_qnetworkaccessfilebackend_p.o .obj/moc_qnetworkaccessftpbackend_p.o .obj/moc_qnetworkcookiejar.o .obj/moc_qnetworkreply.o .obj/moc_qnetworkreplyhttpimpl_p.o .obj/moc_qabstractnetworkcache.o .obj/moc_qnetworkdiskcache.o .obj/moc_qhttpthreaddelegate_p.o .obj/moc_qhttpmultipart.o .obj/moc_qnetworkfile_p.o .obj/moc_qhttp2protocolhandler_p.o .obj/moc_qnetworkconfigmanager_p.o .obj/moc_qnetworksession_p.o .obj/moc_qbearerplugin_p.o .obj/moc_qdnslookup_p.o .obj/moc_qhostinfo_p.o .obj/moc_qnetworkproxy.o .obj/moc_qabstractsocketengine_p.o .obj/moc_qhttpsocketengine_p.o .obj/moc_qtcpsocket.o .obj/moc_qudpsocket.o .obj/moc_qsocks5socketengine_p.o .obj/moc_qnativesocketengine_p.o -L/opt/tslib/lib -L/opt/sqlite3/lib -L/home/parsaeeyan/ktclicheepi/buildroot-2022.02.9/output/host/arm-buildroot-linux-gnueabihf/sysroot/usr/lib -L/home/parsaeeyan/NLC2/qt5/5.9.1/qtbase/lib -lQt5Core -latomic -lrt -ldl -lpthread -lQt5Core -latomic -lrt -lpthread -ldl
/usr/lib/gcc-cross/arm-linux-gnueabi/9/../../../../arm-linux-gnueabi/bin/ld: .obj/qhttpnetworkreply.o: in function QHttpNetworkReply::~QHttpNetworkReply()':
qhttpnetworkreply.cpp:(.text+0xbcc): undefined reference to z_inflateEnd'
/usr/lib/gcc-cross/arm-linux-gnueabi/9/../../../../arm-linux-gnueabi/bin/ld: .obj/qhttpnetworkreply.o: in function QHttpNetworkReplyPrivate::initializeInflateStream()':
qhttpnetworkreply.cpp:(.text+0x112c): undefined reference to z_inflateInit2_'
/usr/lib/gcc-cross/arm-linux-gnueabi/9/../../../../arm-linux-gnueabi/bin/ld: .obj/qhttpnetworkreply.o: in function QHttpNetworkReplyPrivate::clearHttpLayerInformation()':
qhttpnetworkreply.cpp:(.text+0x1b5c): undefined reference to z_inflateEnd'
/usr/lib/gcc-cross/arm-linux-gnueabi/9/../../../../arm-linux-gnueabi/bin/ld: .obj/qhttpnetworkreply.o: in function QHttpNetworkReplyPrivate::uncompressBodyData(QByteDataBuffer*, QByteDataBuffer*)':
qhttpnetworkreply.cpp:(.text+0x3960): undefined reference to z_inflate'
/usr/lib/gcc-cross/arm-linux-gnueabi/9/../../../../arm-linux-gnueabi/bin/ld: qhttpnetworkreply.cpp:(.text+0x3ae4): undefined reference to z_inflateEnd'
/usr/lib/gcc-cross/arm-linux-gnueabi/9/../../../../arm-linux-gnueabi/bin/ld: qhttpnetworkreply.cpp:(.text+0x3b10): undefined reference to z_inflateInit2_'
/usr/lib/gcc-cross/arm-linux-gnueabi/9/../../../../arm-linux-gnueabi/bin/ld: .obj/qhostaddress.o: in function QHostAddress::toString() const':
qhostaddress.cpp:(.text+0xb48): undefined reference to QIPAddressUtils::toString(QString&, unsigned char*)'
/usr/lib/gcc-cross/arm-linux-gnueabi/9/../../../../arm-linux-gnueabi/bin/ld: .obj/qhostinfo.o: in function (anonymous namespace)::emit_results_ready(QHostInfo const&, QObject const*, QtPrivate::QSlotObjectBase*):'
qhostinfo.cpp:(.text+0x26c): undefined reference to QMetaCallEvent::QMetaCallEvent(QtPrivate::QSlotObjectBase*, QObject const*, int, int, int*, void*, QSemaphore)'
/usr/lib/gcc-cross/arm-linux-gnueabi/9/../../../../arm-linux-gnueabi/bin/ld: qhostinfo.cpp:(.text+0x2f8): undefined reference to QMetaObjectPrivate::signalOffset(QMetaObject const*)'
collect2: error: ld returned 1 exit status
make[3]: * [Makefile:502: ../../lib/libQt5Network.so.5.9.1] Error 1
make[3]: Leaving directory '/home/parsaeeyan/NLC2/qt5/5.9.1/qtbase/src/network'
make[2]: * [Makefile:270: sub-network-make_first] Error 2
make[2]: Leaving directory '/home/parsaeeyan/NLC2/qt5/5.9.1/qtbase/src'
make[1]: * [Makefile:49: sub-src-make_first] Error 2
make[1]: Leaving directory '/home/parsaeeyan/NLC2/qt5/5.9.1/qtbase'
make: * [Makefile:76: module-qtbase-make_first] Error 2
离线
QMAKE_LFLAGS += -Wl,--no-undefined -latomic -lrt -ldl -lpthread
里追加上
-lz
试试
离线
感谢你的回复。
我添加了 -lz 但仍然出现同样的错误。
QMAKE_LFLAGS += -lz -Wl,--no-undefined -latomic -lrt -ldl -lpthread
离线