Coder Social home page Coder Social logo

raspberry-pi-qt-builds's Introduction

raspberry-pi-qt-builds

Qt builds for the Raspberry Pi platform

Overview

This project contains scripts for building Qt natively on the Raspberry Pi platform. It includes the Qt libraries and tools (e.g. qmake) for developing Qt-based applications on the Raspberry Pi. Also included are binaries (in the form of tar archives) for various versions of Qt that will run under the Raspbian Linux distribution. As building Qt natively is very time consuming, these are provided for the convenience of developers who want to use a recent version of Qt on the Raspberry Pi platform running Raspbian.

Note that if you want to do significant Qt development for the Raspberry Pi, it is generally recommended to set up a cross-compiled development environment running on a faster desktop computer. While more complex to initially set up, this will usually pay off in reduced build times.

Also note that Raspberry Pi OS includes packages for Qt 5.11.3. If this version is new enough for you, you may want to use the official Raspberry Pi OS Qt packages rather than the ones provided here.

Features

These builds support the latest Qt "recommended" and "long term support" releases. The downloads include both a "full" version as well as a "minimal" version which does not include the Qt documentation or example applications. The builds are provided in the form of tar archives which can be extracted on a Raspberry Pi system running Raspbian. The table below lists the current binary builds.

Qt Version Platform Type Options Size Comments
5.9.7 Raspberry Pi 3 Native Full 586MB
5.9.7 Raspberry Pi 3 Native Minimal 51MB No examples or docs
5.11.3 Raspberry Pi 3 Native Full 422MB
5.11.3 Raspberry Pi 3 Native Minimal 61MB No examples or docs
5.12.0 Raspberry Pi 3 Native Full 419MB
5.12.0 Raspberry Pi 3 Native Minimal 58MB No examples or docs
5.12.4 Raspberry Pi 3 Native Full 419MB
5.12.4 Raspberry Pi 3 Native Minimal 58MB No examples or docs
5.13.0 Raspberry Pi 3 Native Full 504MB
5.13.0 Raspberry Pi 3 Native Minimal 58MB No examples or docs
5.14.1 Raspberry Pi 3 Native Minimal 71MB No examples or docs
5.15.2 Raspberry Pi 4 Native Minimal 67MB No examples or docs
5.15.2 Raspberry Pi 4 Native Full 625MB
6.1.0 Raspberry Pi 4 Native Minimal 64MB No examples or docs
Qt Creator Version Platform Type Options Size Comments
4.6.2 Raspberry Pi 3 Native Full 41MB Built against Qt 5.9.6
4.6.2 Raspberry Pi 3 Native Full 41MB Built against Qt 5.11.1
4.7.2 Raspberry Pi 3 Native Full 25MB Built against Qt 5.11.2
4.8.0 Raspberry Pi 3 Native Full 25MB Built against Qt 5.12.0

The builds include most Qt modules (see below under "Known Issues and Limitations"). The following rendering back ends are included: eglfs, linuxfb, minimal, minimalegl, offscreen, vnc, wayland-egl, wayland, wayland-xcomposite-egl, wayland-xcomposite-glx, webgl, xcb.

Building

If you want to build these images yourself, you can run the provided script (qtbuild.sh) on a Raspberry Pi system. It is recommended that you configure the system (using raspi-config) to boot into a text console and not run the graphical desktop. I have had issues with the Raspberry Pi rebooting during the build. If so, you can manually restart it.

There are a number of packages which need to be installed in order to built Qt. Here is a list which may not be entirely complete or accurate (you can install them with sudo apt-get ):

autotools-dev bison build-essential default-libmysqlclient-dev
dpkg-dev firebird-dev flex freetds-dev gstreamer1.0-alsa
gstreamer1.0-libav gstreamer1.0-omx gstreamer1.0-omx-rpi
gstreamer1.0-omx-rpi-config gstreamer1.0-plugins-bad
gstreamer1.0-plugins-base gstreamer1.0-plugins-good gstreamer1.0-x
icu-devtools libasound2-dev libatk1.0-dev libatk-bridge2.0-dev libassimp-dev
libatspi2.0-dev libaudit-dev libavcodec-dev libavformat-dev
libbison-dev libbsd-dev libc6-dev libcairo2-dev libcap-ng-dev libbluetooth-dev
libc-dev-bin libcups2-dev libcupsimage2-dev libclang-dev libdbus-1-dev
libdevmapper-dev libdmx-dev libdouble-conversion-dev libdrm-dev
libegl1-mesa-dev libepoxy-dev libexpat1-dev libfontconfig1-dev
libfontenc-dev libfreetype6-dev libgbm-dev libgcc-6-dev
libgcrypt20-dev libgdk-pixbuf2.0-dev libgl1-mesa-dev libgles2-mesa-dev
libglib2.0-dev libglu1-mesa-dev libgmp-dev libgpg-error-dev
libgraphite2-dev libgstreamer1.0 libgstreamer1.0-0 libgstreamer1.0-dev
libgstreamer-plugins-bad1.0-0 libgstreamer-plugins-base1.0-0
libgstreamer-plugins-base1.0-dev libgtk-3-dev libharfbuzz-dev
libhunspell-dev libice-dev libicu-dev libinput-dev libjbig-dev
libjpeg62-turbo-dev libjpeg-dev libltdl-dev liblzma-dev
libmariadbclient-dev libmariadbclient-dev-compat libmnl-dev
libmtdev-dev libpango1.0-dev libpciaccess-dev libpcre3-dev
libpipeline-dev libpixman-1-dev libpng-dev libpq-dev libproxy-dev
libpthread-stubs0-dev libpulse-dev libpython2.7-dev libpython3.5-dev
libpython3-dev libpython-all-dev libpython-dev libqt5opengl5-dev
libqt5webkit5-dev libraspberrypi-dev librtimulib-dev libselinux1-dev
libsepol1-dev libsgutils2-dev libsm-dev libsqlite3-dev libssl-dev
libstdc++-6-dev libswscale-dev libsystemd-dev libtiff5-dev libudev-dev
libwayland-dev libx11-dev libx11-xcb1 libx11-xcb-dev libxau-dev
libxaw7-dev libxcb1 libxcb1-dev libxcb-dri2-0-dev libxcb-dri3-dev
libxcb-glx0-dev libxcb-icccm4 libxcb-icccm4-dev libxcb-image0
libxcb-image0-dev libxcb-keysyms1 libxcb-keysyms1-dev
libxcb-present-dev libxcb-randr0-dev libxcb-render0-dev
libxcb-render-util0 libxcb-render-util0-dev libxcb-shape0-dev
libxcb-shm0 libxcb-shm0-dev libxcb-sync0-dev libxcb-sync1
libxcb-sync-dev libxcb-util0-dev libxcb-xf86dri0-dev
libxcb-xfixes0-dev libxcb-xinerama0 libxcb-xinerama0-dev
libxcb-xkb-dev libxcb-xv0-dev libxcomposite-dev libxcursor-dev
libxdamage-dev libxdmcp-dev libxext-dev libxfixes-dev libxfont-dev
libxft-dev libxi-dev libxinerama-dev libxkbcommon-dev
libxkbcommon-x11-dev libxkbfile-dev libxml2-dev libxmu-dev libxmuu-dev
libxpm-dev libxrandr-dev libxrender-dev libxres-dev libxshmfence-dev
libxt-dev libxtst-dev libxv-dev libxxf86vm-dev linux-libc-dev
manpages-dev mesa-common-dev nettle-dev python2.7-dev python3.5-dev
python3-dev python3-smbus python-all-dev python-dev python-smbus
qtbase5-dev qtbase5-dev-tools qtbase5-private-dev qtdeclarative5-dev
qtdeclarative5-private-dev qttools5-dev-tools ruby unixodbc-dev
x11proto-bigreqs-dev x11proto-composite-dev x11proto-core-dev
x11proto-damage-dev x11proto-dmx-dev x11proto-dri2-dev
x11proto-dri3-dev x11proto-fixes-dev x11proto-fonts-dev
x11proto-gl-dev x11proto-input-dev x11proto-kb-dev
x11proto-present-dev x11proto-randr-dev x11proto-record-dev
x11proto-render-dev x11proto-resource-dev x11proto-scrnsaver-dev
x11proto-video-dev x11proto-xcmisc-dev x11proto-xext-dev
x11proto-xf86bigfont-dev x11proto-xf86dga-dev x11proto-xf86dri-dev
x11proto-xf86vidmode-dev x11proto-xinerama-dev xtrans-dev xutils-dev
zlib1g-dev

Expect the build to take many hours on a Raspberry Pi 3 (on the order of eight hours for the minimal build, 24 hours for a full build).

Installing

Download the desired binary archive, e.g. Qt5.10.1-RaspberryPi3-bin-full.tgz, and then install it using commands like this:

cd /
sudo tar xf /home/pi/Qt5.10.1-RaspberryPi3-bin-full.tgz

Qt Creator can be installed in a similar way, e.g.

cd /
sudo tar xf /home/pi/QtCreator4.6.2-Qt5.9.6-RaspberryPi3-bin.tgz

You can then run qmake specifying the full path, e.g. /usr/local/Qt-5.10.1/bin/qmake. You may want to add the Qt binary directory (e.g. /usr/local/Qt-5.10.1/bin) to your path.

Qt Creator can be run as "qtcreator" (it gets installed in /usr/local/bin/qtcreator).

Known Issues and Limitations

The binaries have only had minimal testing. Both the xcb and eglfs rendering back ends should work and there is support for both widgets and QML.

The binaries support Raspbian Linux and the Raspberry Pi 3 only.

The QtWebengine and QtLocation modules are not included as they require more memory to build than is available on a Raspberry Pi 3 (you might be able to compile them if you add swap space).

Qt 5.11.0 and later requires a newer version of libclang to build the documentation than is currently available in Raspbian. The Qt documentation is currently not available in these builds.

The Qt Creator binary is built against a specific version of Qt. That version needs to be installed in order to run it. You can install multiple versions of Qt if desired, provided that you have enough disk space.

The software was built on a Raspian system based on the "stretch" release. It won't run on the older "jessie" release.

It is not using hardware (GPU) OpenGL, so OpenGL performance will be poor.

Future Plans

The following are some features that are being considered for the future:

  • Offer Debian format packages
  • Provide cross-compilation packages
  • Add builds for other Raspberry Pi models

References

  1. https://wiki.qt.io/Native_Build_of_Qt5_on_a_Raspberry_Pi
  2. https://wiki.qt.io/Native_Build_of_Qt_5.4.1_on_a_Raspberry_Pi

Legal Disclaimer

This software is provided "as is" and any expressed or implied warranties, including, but not limited to, the implied warranties of merchantability and fitness for a particular purpose are disclaimed. in no event shall ICS or its contributors be liable for any direct, indirect, incidental, special, exemplary, or consequential damages (including, but not limited to, procurement of substitute goods or services; loss of use, data, or profits; or business interruption) however caused and on any theory of liability, whether in contract, strict liability, or tort (including negligence or otherwise) arising in any way out of the use of this software, even if advised of the possibility of such damage.

raspberry-pi-qt-builds's People

Contributors

tranter avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

raspberry-pi-qt-builds's Issues

incompatible libstdc++ error from 'rcc' with initial beta 0.2 release on current raspbian 'jessie'

I installed https://github.com/tranter/raspberry-pi-qt-builds/releases/download/v0.2-beta/Qt5.10.1-RaspberryPi3-bin-full.tgz and was able to successfully compile a Qt app up to the point where 'rcc' was invoked:

/usr/local/Qt-5.11.0/bin/rcc -name qml qml.qrc -o qrc_qml.cpp
/usr/local/Qt-5.11.0/bin/rcc: /usr/lib/arm-linux-gnueabihf/libstdc++.so.6: version `CXXABI_1.3.9' not found (required by /usr/local/Qt-5.11.0/bin/rcc)
Makefile:743: recipe for target 'qrc_qml.cpp' failed

Note that installed libstdc++ only goes up to CXXABI_1.3.8:

$ strings  /usr/lib/arm-linux-gnueabihf/libstdc++.so.6 | grep CXXABI
CXXABI_1.3
CXXABI_1.3.1
CXXABI_1.3.2
CXXABI_1.3.3
CXXABI_1.3.4
CXXABI_1.3.5
CXXABI_1.3.6
CXXABI_1.3.7
CXXABI_1.3.8
CXXABI_TM_1
CXXABI_ARM_1.3.3

An up-to-date 'libstdc++6' Raspbian Jessie package is installed:

$ apt-file search /usr/lib/arm-linux-gnueabihf/libstdc++.so.6
libstdc++6: /usr/lib/arm-linux-gnueabihf/libstdc++.so.6
libstdc++6: /usr/lib/arm-linux-gnueabihf/libstdc++.so.6.0.20

xkbcommon-compose.h not found

I'm following your script but there are a number of issues I am having. I'm getting a ton of errors around your giant dependency list. Still, I soldiered on. I eventually came to this error:

qwaylandinputdevice.cpp:74:41: fatal error: xkbcommon/xkbcommon-compose.h: No such file or directory
#include <xkbcommon/xkbcommon-compose.h>

Indeed, it is missing:

$ ls /usr/include/xkbcommon/xkbcommon*
/usr/include/xkbcommon/xkbcommon-compat.h
/usr/include/xkbcommon/xkbcommon.h
/usr/include/xkbcommon/xkbcommon-keysyms.h
/usr/include/xkbcommon/xkbcommon-names.h
/usr/include/xkbcommon/xkbcommon-x11.h

I have all the other headers though. How did you resolve this?
I attempted to resolve it by installing libxkbcommon from git, but that requires meson to build, but jessie does not have a recent enough meson. ( xkbcommon/libxkbcommon#74 )

Any help would be appreciated. Could you ask one of your systems who is providing xkbcommon-compose.h, and tell me the package and version?

Thanks

Qt-5.14.1 Incompatible version of OpenSSL

I installed Qt5.14.1-RaspberryPi3-bin-full.tgz on a Raspberry Pi4. It is basically working, but I don't seem to have the correct version of OpenSSL installed. The OS comes with OpenSSL 1.1.1d. I also tried OpenSSL 3.0.0-alpha14-dev and OpenSSL 1.1.1c.
All of these versions print a series of errors on startup of the application I am running (QRadioLink) such as
qt.network.ssl: QSslSocket: cannot resolve SSLeay (and others)
and it always ends with:
qt.network.ssl: Incompatible version of OpenSSL

After looking around on the Internet, it seems that this could be solved by using the correct version of OpenSSL.

Can you please tell me which version of OpenSSL was used to compile Qt5.14.1? What install directories?

----Steve

libicui18n.so.57: cannot open shared object file

Hi
i tried extracting prebuild Qt from release section(Qt5.12.0-RaspberryPi3-bin-full.tgz and QtCreator4.8.0-Qt5.12.0-RaspberryPi3-bin.tgz) in raspberry pi 3
it used to work before , i reinstalled raspbian(latest version)
now its not working. when i run QtCreator, it shows following error

error while loading shared libraries: libicui18n.so.57: cannot open shared object file: No Such file or directory.

anybody know how to fix this?

Thanks

script stopping with error

Hi,

I just ran into the issue that the script is not running thru and building Qt 5.12.4 on my Raspberry Pi 3.

The last I can see at the terminal is:

/root/qtbuild/qt-everywhere-src-5.12.4/qtbase/src/corelib/qdoc_wrapper.sh: 12: exec: /usr/local/Qt-5.12.4/bin/qdoc: not found
make[5]: *** [Makefile:1694: prepare_docs] Error 127
make[4]: *** [Makefile:1372: sub-corelib-prepare_docs] Error 2
make[3]: *** [Makefile:386: sub-src-prepare_docs] Error 2
make[2]: *** [Makefile:2090: module-qtbase-prepare_docs] Error 2
make[1]: *** [Makefile:1229: html_docs] Error 2
make: *** [Makefile:1232: docs] Error 2

Ive tried running the script (bash ./build-qt.sh) on a fresh set up RPi3 (requirements acc. readme.md fulfilled). I've also tried to run several versions of the script (0.3, 0.4 and 0.5) and/or several versions of Qt (5.12.4 and 5.15.5).

Any idea what's going wrong?

Alex

Errors using pre-built beta 4 and beta 3...

I downloaded and installed the beta 4 Tar from this site and tried to build the latest qBittorrent (4.3.4.1) on my Pi 4 (Raspbian buster) and got a couple of errors:

`============ PuTTY log 2021.04.11 10:00:51 ============

make -j$(nproc)

cd src/ && ( test -e Makefile || /usr/local/Qt-5.15.2/bin/qmake -o Makefile /root/build/qBittorrent-release-4.3.4.1/src/src.pro QMAKE_LRELEASE= ) && make -f Makefile
make[1]: Entering directory '/root/build/qBittorrent-release-4.3.4.1/src'
compiling base/bittorrent/tracker.cpp
compiling base/http/responsebuilder.cpp
compiling base/http/responsegenerator.cpp
compiling base/http/server.cpp
In file included from base/http/server.cpp:31:
base/http/server.h:66:17: error: field m_key has incomplete type QSslKey
QSslKey m_key;
^~~~~
In file included from /usr/local/Qt-5.15.2/include/QtNetwork/QSslCertificate:1,
from base/http/server.h:34,
from base/http/server.cpp:31:
/usr/local/Qt-5.15.2/include/QtNetwork/qsslcertificate.h:63:7: note: forward declaration of class QSslKey
class QSslKey;
^~~~~~~
base/http/server.cpp:52:11: error: QSslCipher was not declared in this scope
QList safeCipherList()
^~~~~~~~~~
base/http/server.cpp:52:11: note: suggested alternative: QSslKey
QList safeCipherList()
^~~~~~~~~~
QSslKey
base/http/server.cpp:52:21: error: template argument 1 is invalid
QList safeCipherList()
^
base/http/server.cpp: In function int {anonymous}::safeCipherList():
base/http/server.cpp:55:21: error: QSslCipher was not declared in this scope
const QList allCiphers {QSslConfiguration::supportedCiphers()};
^~~~~~~~~~
base/http/server.cpp:55:21: note: suggested alternative: badCiphers
const QList allCiphers {QSslConfiguration::supportedCiphers()};
^~~~~~~~~~
badCiphers
base/http/server.cpp:55:31: error: template argument 1 is invalid
const QList allCiphers {QSslConfiguration::supportedCiphers()};
^
base/http/server.cpp:55:64: error: incomplete type QSslConfiguration used in nested name specifier
const QList allCiphers {QSslConfiguration::supportedCiphers()};
^~~~~~~~~~~~~~~~
base/http/server.cpp:56:25: error: type/value mismatch at argument 1 in template parameter list for template class QList
QList safeCiphers;
^
base/http/server.cpp:56:25: note: expected a type, got QSslCipher
base/http/server.cpp:57:33: error: request for member cbegin in allCiphers, which is of non-class type const int
std::copy_if(allCiphers.cbegin(), allCiphers.cend(), std::back_inserter(safeCiphers), [&badCiphers](const QSslCipher &cipher)
^~~~~~
base/http/server.cpp:57:54: error: request for member cend in allCiphers, which is of non-class type const int
std::copy_if(allCiphers.cbegin(), allCiphers.cend(), std::back_inserter(safeCiphers), [&badCiphers](const QSslCipher &cipher)
^~~~
In file included from /usr/include/c++/8/bits/stl_algobase.h:67,
from /usr/include/c++/8/algorithm:61,
from /usr/local/Qt-5.15.2/include/QtCore/qglobal.h:142,
from /usr/local/Qt-5.15.2/include/QtCore/qchar.h:43,
from /usr/local/Qt-5.15.2/include/QtCore/qhash.h:44,
from /usr/local/Qt-5.15.2/include/QtCore/qset.h:43,
from /usr/local/Qt-5.15.2/include/QtCore/QSet:1,
from base/http/server.h:33,
from base/http/server.cpp:31:
/usr/include/c++/8/bits/stl_iterator.h: In instantiation of class std::back_insert_iterator:
base/http/server.cpp:57:92: required from here
/usr/include/c++/8/bits/stl_iterator.h:490:7: error: int is not a class, struct, or union type
operator=(const typename _Container::value_type& __value)
^~~~~~~~
/usr/include/c++/8/bits/stl_iterator.h:497:7: error: int is not a class, struct, or union type
operator=(typename _Container::value_type&& __value)
^~~~~~~~
base/http/server.cpp:57:115: error: QSslCipher does not name a type; did you mean allCiphers?
std::copy_if(allCiphers.cbegin(), allCiphers.cend(), std::back_inserter(safeCiphers), [&badCiphers](const QSslCipher &cipher)
^~~~~~~~~~
allCiphers
base/http/server.cpp: In lambda function:
base/http/server.cpp:63:11: error: expected { before ; token
});
^
base/http/server.cpp: In function int {anonymous}::safeCipherList():
base/http/server.cpp:63:11: error: expected ) before ; token
});
^
)
base/http/server.cpp:57:21: note: to match this (
std::copy_if(allCiphers.cbegin(), allCiphers.cend(), std::back_inserter(safeCiphers), [&badCiphers](const QSslCipher &cipher)
^
base/http/server.cpp: In constructor Http::Server::Server(Http::IRequestHandler*, QObject*):
base/http/server.cpp:77:23: error: variable QSslConfiguration sslConf has initializer but incomplete type
QSslConfiguration sslConf {QSslConfiguration::defaultConfiguration()};
^~~~~~~
base/http/server.cpp:77:51: error: incomplete type QSslConfiguration used in nested name specifier
QSslConfiguration sslConf {QSslConfiguration::defaultConfiguration()};
^~~~~~~~~~~~~~~~~~~~
base/http/server.cpp:79:24: error: incomplete type QSslConfiguration used in nested name specifier
QSslConfiguration::setDefaultConfiguration(sslConf);
^~~~~~~~~~~~~~~~~~~~~~~
base/http/server.cpp: In member function virtual void Http::Server::incomingConnection(qintptr):
base/http/server.cpp:92:28: error: expected type-specifier before QSslSocket
serverSocket = new QSslSocket(this);
^~~~~~~~~~
base/http/server.cpp:94:43: error: invalid use of incomplete type class QTcpSocket
serverSocket = new QTcpSocket(this);
^
In file included from /usr/local/Qt-5.15.2/include/QtNetwork/QTcpServer:1,
from base/http/server.h:36,
from base/http/server.cpp:31:
/usr/local/Qt-5.15.2/include/QtNetwork/qtcpserver.h:55:7: note: forward declaration of class QTcpSocket
class QTcpSocket;
^~~~~~~~~~
base/http/server.cpp:96:22: error: invalid use of incomplete type class QTcpSocket
if (!serverSocket->setSocketDescriptor(socketDescriptor))
^~
In file included from /usr/local/Qt-5.15.2/include/QtNetwork/QTcpServer:1,
from base/http/server.h:36,
from base/http/server.cpp:31:
/usr/local/Qt-5.15.2/include/QtNetwork/qtcpserver.h:55:7: note: forward declaration of class QTcpSocket
class QTcpSocket;
^~~~~~~~~~
base/http/server.cpp:98:16: warning: possible problem detected in invocation of delete operator: [-Wdelete-incomplete]
delete serverSocket;
^~~~~~~~~~~~
base/http/server.cpp:90:17: warning: serverSocket has incomplete type
QTcpSocket *serverSocket;
^~~~~~~~~~~~
In file included from /usr/local/Qt-5.15.2/include/QtNetwork/QTcpServer:1,
from base/http/server.h:36,
from base/http/server.cpp:31:
/usr/local/Qt-5.15.2/include/QtNetwork/qtcpserver.h:55:7: note: forward declaration of class QTcpSocket
class QTcpSocket;
^~~~~~~~~~
base/http/server.cpp:98:16: note: neither the destructor nor the class-specific operator delete will be called, even if they are declared when the class is defined
delete serverSocket;
^~~~~~~~~~~~
base/http/server.cpp:104:21: error: QSslSocket does not name a type; did you mean QTcpSocket?
static_cast<QSslSocket *>(serverSocket)->setProtocol(QSsl::SecureProtocols);
^~~~~~~~~~
QTcpSocket
base/http/server.cpp:104:32: error: expected > before * token
static_cast<QSslSocket *>(serverSocket)->setProtocol(QSsl::SecureProtocols);
^
base/http/server.cpp:104:32: error: expected ( before * token
static_cast<QSslSocket *>(serverSocket)->setProtocol(QSsl::SecureProtocols);
^
(
base/http/server.cpp:104:33: error: expected primary-expression before > token
static_cast<QSslSocket *>(serverSocket)->setProtocol(QSsl::SecureProtocols);
^
base/http/server.cpp:104:48: error: invalid use of incomplete type class QTcpSocket
static_cast<QSslSocket *>(serverSocket)->setProtocol(QSsl::SecureProtocols);
^~
In file included from /usr/local/Qt-5.15.2/include/QtNetwork/QTcpServer:1,
from base/http/server.h:36,
from base/http/server.cpp:31:
/usr/local/Qt-5.15.2/include/QtNetwork/qtcpserver.h:55:7: note: forward declaration of class QTcpSocket
class QTcpSocket;
^~~~~~~~~~
base/http/server.cpp:104:84: error: expected ) before ; token
static_cast<QSslSocket *>(serverSocket)->setProtocol(QSsl::SecureProtocols);
^
)
base/http/server.cpp:105:21: error: QSslSocket does not name a type; did you mean QTcpSocket?
static_cast<QSslSocket *>(serverSocket)->setPrivateKey(m_key);
^~~~~~~~~~
QTcpSocket
base/http/server.cpp:105:32: error: expected > before * token
static_cast<QSslSocket >(serverSocket)->setPrivateKey(m_key);
^
base/http/server.cpp:105:32: error: expected ( before * token
static_cast<QSslSocket >(serverSocket)->setPrivateKey(m_key);
^
(
base/http/server.cpp:105:33: error: expected primary-expression before > token
static_cast<QSslSocket >(serverSocket)->setPrivateKey(m_key);
^
base/http/server.cpp:105:48: error: invalid use of incomplete type class QTcpSocket
static_cast<QSslSocket >(serverSocket)->setPrivateKey(m_key);
^~
In file included from /usr/local/Qt-5.15.2/include/QtNetwork/QTcpServer:1,
from base/http/server.h:36,
from base/http/server.cpp:31:
/usr/local/Qt-5.15.2/include/QtNetwork/qtcpserver.h:55:7: note: forward declaration of class QTcpSocket
class QTcpSocket;
^~~~~~~~~~
base/http/server.cpp:105:70: error: expected ) before ; token
static_cast<QSslSocket >(serverSocket)->setPrivateKey(m_key);
^
)
base/http/server.cpp:106:21: error: QSslSocket does not name a type; did you mean QTcpSocket?
static_cast<QSslSocket >(serverSocket)->setLocalCertificateChain(m_certificates);
^~~~~~~~~~
QTcpSocket
base/http/server.cpp:106:32: error: expected > before * token
static_cast<QSslSocket >(serverSocket)->setLocalCertificateChain(m_certificates);
^
base/http/server.cpp:106:32: error: expected ( before * token
static_cast<QSslSocket >(serverSocket)->setLocalCertificateChain(m_certificates);
^
(
base/http/server.cpp:106:33: error: expected primary-expression before > token
static_cast<QSslSocket >(serverSocket)->setLocalCertificateChain(m_certificates);
^
base/http/server.cpp:106:48: error: invalid use of incomplete type class QTcpSocket
static_cast<QSslSocket >(serverSocket)->setLocalCertificateChain(m_certificates);
^~
In file included from /usr/local/Qt-5.15.2/include/QtNetwork/QTcpServer:1,
from base/http/server.h:36,
from base/http/server.cpp:31:
/usr/local/Qt-5.15.2/include/QtNetwork/qtcpserver.h:55:7: note: forward declaration of class QTcpSocket
class QTcpSocket;
^~~~~~~~~~
base/http/server.cpp:106:90: error: expected ) before ; token
static_cast<QSslSocket >(serverSocket)->setLocalCertificateChain(m_certificates);
^
)
base/http/server.cpp:107:21: error: QSslSocket does not name a type; did you mean QTcpSocket?
static_cast<QSslSocket >(serverSocket)->setPeerVerifyMode(QSslSocket::VerifyNone);
^~~~~~~~~~
QTcpSocket
base/http/server.cpp:107:32: error: expected > before * token
static_cast<QSslSocket >(serverSocket)->setPeerVerifyMode(QSslSocket::VerifyNone);
^
base/http/server.cpp:107:32: error: expected ( before * token
static_cast<QSslSocket >(serverSocket)->setPeerVerifyMode(QSslSocket::VerifyNone);
^
(
base/http/server.cpp:107:33: error: expected primary-expression before > token
static_cast<QSslSocket >(serverSocket)->setPeerVerifyMode(QSslSocket::VerifyNone);
^
base/http/server.cpp:107:48: error: invalid use of incomplete type class QTcpSocket
static_cast<QSslSocket >(serverSocket)->setPeerVerifyMode(QSslSocket::VerifyNone);
^~
In file included from /usr/local/Qt-5.15.2/include/QtNetwork/QTcpServer:1,
from base/http/server.h:36,
from base/http/server.cpp:31:
/usr/local/Qt-5.15.2/include/QtNetwork/qtcpserver.h:55:7: note: forward declaration of class QTcpSocket
class QTcpSocket;
^~~~~~~~~~
base/http/server.cpp:107:68: error: QSslSocket has not been declared
static_cast<QSslSocket >(serverSocket)->setPeerVerifyMode(QSslSocket::VerifyNone);
^~~~~~~~~~
base/http/server.cpp:107:91: error: expected ) before ; token
static_cast<QSslSocket >(serverSocket)->setPeerVerifyMode(QSslSocket::VerifyNone);
^
)
base/http/server.cpp:108:21: error: QSslSocket does not name a type; did you mean QTcpSocket?
static_cast<QSslSocket >(serverSocket)->startServerEncryption();
^~~~~~~~~~
QTcpSocket
base/http/server.cpp:108:32: error: expected > before * token
static_cast<QSslSocket >(serverSocket)->startServerEncryption();
^
base/http/server.cpp:108:32: error: expected ( before * token
static_cast<QSslSocket >(serverSocket)->startServerEncryption();
^
(
base/http/server.cpp:108:33: error: expected primary-expression before > token
static_cast<QSslSocket >(serverSocket)->startServerEncryption();
^
base/http/server.cpp:108:48: error: invalid use of incomplete type class QTcpSocket
static_cast<QSslSocket >(serverSocket)->startServerEncryption();
^~
In file included from /usr/local/Qt-5.15.2/include/QtNetwork/QTcpServer:1,
from base/http/server.h:36,
from base/http/server.cpp:31:
/usr/local/Qt-5.15.2/include/QtNetwork/qtcpserver.h:55:7: note: forward declaration of class QTcpSocket
class QTcpSocket;
^~~~~~~~~~
base/http/server.cpp:108:73: error: expected ) before ; token
static_cast<QSslSocket >(serverSocket)->startServerEncryption();
^
)
base/http/server.cpp:113:101: error: no matching function for call to Http::Server::connect(QTcpSocket
&, void (QAbstractSocket::
)(), Http::Server
, Http::Server::incomingConnection(qintptr)::<lambda()>)
connect(serverSocket, &QAbstractSocket::disconnected, this, c, this { removeConnection(c); });
^
In file included from /usr/local/Qt-5.15.2/include/QtCore/qsharedpointer_impl.h:65,
from /usr/local/Qt-5.15.2/include/QtCore/qsharedpointer.h:48,
from /usr/local/Qt-5.15.2/include/QtNetwork/qsslcertificate.h:54,
from /usr/local/Qt-5.15.2/include/QtNetwork/QSslCertificate:1,
from base/http/server.h:34,
from base/http/server.cpp:31:
/usr/local/Qt-5.15.2/include/QtCore/qobject.h:222:36: note: candidate: static QMetaObject::Connection QObject::connect(const QObject
, const char
, const QObject
, const char
, Qt::ConnectionType)
static QMetaObject::Connection connect(const QObject sender, const char signal,
^~~~~~~
/usr/local/Qt-5.15.2/include/QtCore/qobject.h:222:36: note: no known conversion for argument 1 from QTcpSocket
to const QObject

/usr/local/Qt-5.15.2/include/QtCore/qobject.h:225:36: note: candidate: static QMetaObject::Connection QObject::connect(const QObject
, const QMetaMethod&, const QObject
, const QMetaMethod&, Qt::ConnectionType)
static QMetaObject::Connection connect(const QObject sender, const QMetaMethod &signal,
^~~~~~~
/usr/local/Qt-5.15.2/include/QtCore/qobject.h:225:36: note: no known conversion for argument 1 from QTcpSocket
to const QObject

/usr/local/Qt-5.15.2/include/QtCore/qobject.h:481:32: note: candidate: QMetaObject::Connection QObject::connect(const QObject
, const char
, const char
, Qt::ConnectionType) const
inline QMetaObject::Connection QObject::connect(const QObject asender, const char asignal,
^~~~~~~
/usr/local/Qt-5.15.2/include/QtCore/qobject.h:481:32: note: no known conversion for argument 1 from QTcpSocket
to const QObject

/usr/local/Qt-5.15.2/include/QtCore/qobject.h:242:43: note: candidate: template<class Func1, class Func2> static QMetaObject::Connection QObject::connect(const typename QtPrivate::FunctionPointer::Object, Func1, const typename QtPrivate::FunctionPointer::Object, Func2, Qt::ConnectionType)
static inline QMetaObject::Connection connect(const typename QtPrivate::FunctionPointer::Object sender, Func1 signal,
^~~~~~~
/usr/local/Qt-5.15.2/include/QtCore/qobject.h:242:43: note: template argument deduction/substitution failed:
/usr/local/Qt-5.15.2/include/QtCore/qobject.h: In substitution of template<class Func1, class Func2> static QMetaObject::Connection QObject::connect(const typename QtPrivate::FunctionPointer::Object
, Func1, const typename QtPrivate::FunctionPointer::Object, Func2, Qt::ConnectionType) [with Func1 = void (QAbstractSocket::)(); Func2 = Http::Server::incomingConnection(qintptr)::<lambda()>]:
base/http/server.cpp:113:101: required from here
/usr/local/Qt-5.15.2/include/QtCore/qobject.h:242:43: error: no type named Object in struct QtPrivate::FunctionPointer<Http::Server::incomingConnection(qintptr)::<lambda()> >
/usr/local/Qt-5.15.2/include/QtCore/qobject.h:274:13: note: candidate: template<class Func1, class Func2> static typename std::enable_if<((int)(QtPrivate::FunctionPointer::ArgumentCount) >= 0), QMetaObject::Connection>::type QObject::connect(const typename QtPrivate::FunctionPointer::Object, Func1, Func2)
connect(const typename QtPrivate::FunctionPointer::Object sender, Func1 signal, Func2 slot)
^~~~~~~
/usr/local/Qt-5.15.2/include/QtCore/qobject.h:274:13: note: template argument deduction/substitution failed:
base/http/server.cpp:113:101: note: candidate expects 3 arguments, 4 provided
connect(serverSocket, &QAbstractSocket::disconnected, this, c, this { removeConnection(c); });
^
In file included from /usr/local/Qt-5.15.2/include/QtCore/qsharedpointer_impl.h:65,
from /usr/local/Qt-5.15.2/include/QtCore/qsharedpointer.h:48,
from /usr/local/Qt-5.15.2/include/QtNetwork/qsslcertificate.h:54,
from /usr/local/Qt-5.15.2/include/QtNetwork/QSslCertificate:1,
from base/http/server.h:34,
from base/http/server.cpp:31:
/usr/local/Qt-5.15.2/include/QtCore/qobject.h:283:13: note: candidate: template<class Func1, class Func2> static typename std::enable_if<(((int)(QtPrivate::FunctionPointer::ArgumentCount) >= 0) && (! QtPrivate::FunctionPointer::IsPointerToMemberFunction)), QMetaObject::Connection>::type QObject::connect(const typename QtPrivate::FunctionPointer::Object
, Func1, const QObject, Func2, Qt::ConnectionType)
connect(const typename QtPrivate::FunctionPointer::Object sender, Func1 signal, const QObject context, Func2 slot,
^~~~~~~
/usr/local/Qt-5.15.2/include/QtCore/qobject.h:283:13: note: template argument deduction/substitution failed:
/usr/local/Qt-5.15.2/include/QtCore/qobject.h: In substitution of template<class Func1, class Func2> static typename std::enable_if<(((int)(QtPrivate::FunctionPointer::ArgumentCount) >= 0) && (! QtPrivate::FunctionPointer::IsPointerToMemberFunction)), QMetaObject::Connection>::type QObject::connect(const typename QtPrivate::FunctionPointer::Object
, Func1, const QObject
, Func2, Qt::ConnectionType) [with Func1 = void (QAbstractSocket::)(); Func2 = Http::Server::incomingConnection(qintptr)::<lambda()>]:
base/http/server.cpp:113:101: required from here
/usr/local/Qt-5.15.2/include/QtCore/qobject.h:283:13: error: no type named type in struct std::enable_if<false, QMetaObject::Connection>
/usr/local/Qt-5.15.2/include/QtCore/qobject.h:314:13: note: candidate: template<class Func1, class Func2> static typename std::enable_if<(QtPrivate::FunctionPointer::ArgumentCount == -1), QMetaObject::Connection>::type QObject::connect(const typename QtPrivate::FunctionPointer::Object, Func1, Func2)
connect(const typename QtPrivate::FunctionPointer::Object sender, Func1 signal, Func2 slot)
^~~~~~~
/usr/local/Qt-5.15.2/include/QtCore/qobject.h:314:13: note: template argument deduction/substitution failed:
base/http/server.cpp:113:101: note: candidate expects 3 arguments, 4 provided
connect(serverSocket, &QAbstractSocket::disconnected, this, c, this { removeConnection(c); });
^
In file included from /usr/local/Qt-5.15.2/include/QtCore/qsharedpointer_impl.h:65,
from /usr/local/Qt-5.15.2/include/QtCore/qsharedpointer.h:48,
from /usr/local/Qt-5.15.2/include/QtNetwork/qsslcertificate.h:54,
from /usr/local/Qt-5.15.2/include/QtNetwork/QSslCertificate:1,
from base/http/server.h:34,
from base/http/server.cpp:31:
/usr/local/Qt-5.15.2/include/QtCore/qobject.h:322:13: note: candidate: static typename std::enable_if<(QtPrivate::FunctionPointer::ArgumentCount == -1), QMetaObject::Connection>::type QObject::connect(const typename QtPrivate::FunctionPointer::Object
, Func1, const QObject, Func2, Qt::ConnectionType) [with Func1 = void (QAbstractSocket::)(); Func2 = Http::Server::incomingConnection(qintptr)::<lambda()>; typename std::enable_if<(QtPrivate::FunctionPointer::ArgumentCount == -1), QMetaObject::Connection>::type = QMetaObject::Connection; typename QtPrivate::FunctionPointer::Object = QAbstractSocket]
connect(const typename QtPrivate::FunctionPointer::Object sender, Func1 signal, const QObject context, Func2 slot,
^~~~~~~
/usr/local/Qt-5.15.2/include/QtCore/qobject.h:322:13: note: no known conversion for argument 1 from QTcpSocket
to const Object
{aka const QAbstractSocket}
base/http/server.cpp: In member function bool Http::Server::setupHttps(const QByteArray&, const QByteArray&):
base/http/server.cpp:137:19: error: variable const QSslKey key has initializer but incomplete type
const QSslKey key {Utils::Net::loadSSLKey(privateKey)};
^~~
base/http/server.cpp:137:57: error: invalid use of incomplete type class QSslKey
const QSslKey key {Utils::Net::loadSSLKey(privateKey)};
^
In file included from /usr/local/Qt-5.15.2/include/QtNetwork/QSslCertificate:1,
from base/http/server.h:34,
from base/http/server.cpp:31:
/usr/local/Qt-5.15.2/include/QtNetwork/qsslcertificate.h:63:7: note: forward declaration of class QSslKey
class QSslKey;
^~~~~~~
make[1]: *** [Makefile:9040: server.o] Error 1
make[1]: *** Waiting for unfinished jobs....
In file included from base/bittorrent/tracker.cpp:41:
./base/http/server.h:66:17: error: field m_key has incomplete type QSslKey
QSslKey m_key;
^~~~~
In file included from /usr/local/Qt-5.15.2/include/QtNetwork/QSslCertificate:1,
from ./base/http/server.h:34,
from base/bittorrent/tracker.cpp:41:
/usr/local/Qt-5.15.2/include/QtNetwork/qsslcertificate.h:63:7: note: forward declaration of class QSslKey
class QSslKey;
^~~~~~~
make[1]: *** [Makefile:8372: tracker.o] Error 1
make[1]: Leaving directory '/root/build/qBittorrent-release-4.3.4.1/src'
make: *** [Makefile:47: sub-src-make_first] Error 2

`

I also tried Beta 3 (5.12.4) and have gotten the same errors.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.