QT5 build: CC: No such file or directory
-
As I wrote before, the default branch that is checked out when cloning from git is the dev branch and that one is for Qt 6.
You have to explicitly check out the 5.15 branch if you want to build Qt 5.
The repository naming is currently in discussion.
-
As I wrote before, the default branch that is checked out when cloning from git is the dev branch and that one is for Qt 6.
You have to explicitly check out the 5.15 branch if you want to build Qt 5.
The repository naming is currently in discussion.
@SGaist Sorry, I must have missed that. I just assumed that if I followed the directions on a page called "Building QT5 from Git" then I'd get QT5. I don't need any particular QT5, just something more than QT4. May I ask what command I need to issue to get 5.15? Is it
git clone https://github.com/qtproject/qt5.git --branch 5.15
?
-
@SGaist Sorry, I must have missed that. I just assumed that if I followed the directions on a page called "Building QT5 from Git" then I'd get QT5. I don't need any particular QT5, just something more than QT4. May I ask what command I need to issue to get 5.15? Is it
git clone https://github.com/qtproject/qt5.git --branch 5.15
?
@Michele31415 I think you missed:
$ cd qt5 $ git checkout 5.12
-
Drat! Can I still do that now or do I have to start all over again? Maybe rm -rf qt5-build?
-
No problem, you can checkout at branch at any time. Just ensure that all sub modules are as well.
You definitively want to nuke the build folder.
-
No problem, you can checkout at branch at any time. Just ensure that all sub modules are as well.
You definitively want to nuke the build folder.
@SGaist Yup, configure ran cleanly through this time, first try. Assuming the gmake works, I'm wondering about this bit:
Qt is now configured for building. Just run 'gmake'. Once everything is built, you must run 'gmake install'. Qt is now configured for building. Just run 'gmake'. Once everything is built, you must run 'gmake install'. Qt will be installed into Prior to reconfiguration, make sure you remove any leftovers from the previous build.
That line that says "Qt will be installed into" just ends in space. Have I missed something else now?
-
@SGaist Yup, configure ran cleanly through this time, first try. Assuming the gmake works, I'm wondering about this bit:
Qt is now configured for building. Just run 'gmake'. Once everything is built, you must run 'gmake install'. Qt is now configured for building. Just run 'gmake'. Once everything is built, you must run 'gmake install'. Qt will be installed into Prior to reconfiguration, make sure you remove any leftovers from the previous build.
That line that says "Qt will be installed into" just ends in space. Have I missed something else now?
gmake failed again but I can't find an actual error line anywhere in the output, just that "Error 2" at the very end.
... ../../../include/QtCore/../../../../qtbase/src/corelib/tools/qlist.h:238:16: note: because ‘QList<QString>::iterator’ has user-provided ‘QList<T>::iterator::iterator(const QList<T>::iterator&) [with T = QString]’ 238 | inline iterator(const iterator &o) Q_DECL_NOTHROW : i(o.i){} | ^~~~~~~~ rm -f ../../../lib/libQt5Bootstrap.a ar cq ../../../lib/libQt5Bootstrap.a .obj/qlatincodec.o .obj/qtextcodec.o .obj/qutfcodec.o .obj/qglobal.o .obj/qlogging.o .obj/qmalloc.o .obj/qnumeric.o .obj/qabstractfileengine.o .obj/qbuffer.o .obj/qdatastream.o .obj/qdebug.o .obj/qdir.o .obj/qdiriterator.o .obj/qfile.o .obj/qfileinfo.o .obj/qfilesystementry.o .obj/qfilesystemengine.o .obj/qfsfileengine.o .obj/qfsfileengine_iterator.o .obj/qiodevice.o .obj/qfiledevice.o .obj/qresource.o .obj/qtemporaryfile.o .obj/qtextstream.o .obj/qstandardpaths.o .obj/qloggingcategory.o .obj/qloggingregistry.o .obj/qcoreapplication.o .obj/qcoreglobaldata.o .obj/qmetatype.o .obj/qvariant.o .obj/qsystemerror.o .obj/quuid.o .obj/qbitarray.o .obj/qbytearray.o .obj/qarraydata.o .obj/qbytearraymatcher.o .obj/qcommandlineparser.o .obj/qcommandlineoption.o .obj/qcryptographichash.o .obj/qdatetime.o .obj/qhash.o .obj/qlist.o .obj/qlinkedlist.o .obj/qlocale.o .obj/qlocale_tools.o .obj/qmap.o .obj/qregexp.o .obj/qringbuffer.o .obj/qpoint.o .obj/qrect.o .obj/qsize.o .obj/qline.o .obj/qstring.o .obj/qstringbuilder.o .obj/qstring_compat.o .obj/qstringlist.o .obj/qvector.o .obj/qvsnprintf.o .obj/qxmlutils.o .obj/qxmlstream.o .obj/qjson.o .obj/qjsondocument.o .obj/qjsonobject.o .obj/qjsonarray.o .obj/qjsonvalue.o .obj/qjsonparser.o .obj/qjsonwriter.o .obj/qdom.o .obj/qxml.o .obj/qfilesystemengine_unix.o .obj/qfilesystemiterator_unix.o .obj/qfsfileengine_unix.o .obj/qstandardpaths_unix.o gmake[3]: Leaving directory '/opt/qt5/qt5-build/qtbase/src/tools/bootstrap' gmake[2]: Leaving directory '/opt/qt5/qt5-build/qtbase/src' gmake[1]: *** [Makefile:47: sub-src-make_first] Error 2 gmake[1]: Leaving directory '/opt/qt5/qt5-build/qtbase' gmake: *** [Makefile:85: module-qtbase-make_first] Error 2 /opt/qt5/qt5-build $
-
@SGaist Yup, configure ran cleanly through this time, first try. Assuming the gmake works, I'm wondering about this bit:
Qt is now configured for building. Just run 'gmake'. Once everything is built, you must run 'gmake install'. Qt is now configured for building. Just run 'gmake'. Once everything is built, you must run 'gmake install'. Qt will be installed into Prior to reconfiguration, make sure you remove any leftovers from the previous build.
That line that says "Qt will be installed into" just ends in space. Have I missed something else now?
@Michele31415 said in QT5 build: CC: No such file or directory:
@SGaist Yup, configure ran cleanly through this time, first try. Assuming the gmake works, I'm wondering about this bit:
Qt is now configured for building. Just run 'gmake'. Once everything is built, you must run 'gmake install'. Qt is now configured for building. Just run 'gmake'. Once everything is built, you must run 'gmake install'. Qt will be installed into Prior to reconfiguration, make sure you remove any leftovers from the previous build.
That line that says "Qt will be installed into" just ends in space. Have I missed something else now?
If you used the same line as in your initial post, you are doing a developer build and hence it won't be installed. It's an "in place" build.
Unless you want to hack on Qt, you should drop that option as it changes some flags (I don't remember which though).
-
As for the bootstrap error, are you using a multithreaded build ? I do not see the error trigger the stop.
-
@Michele31415 said in QT5 build: CC: No such file or directory:
@SGaist Yup, configure ran cleanly through this time, first try. Assuming the gmake works, I'm wondering about this bit:
Qt is now configured for building. Just run 'gmake'. Once everything is built, you must run 'gmake install'. Qt is now configured for building. Just run 'gmake'. Once everything is built, you must run 'gmake install'. Qt will be installed into Prior to reconfiguration, make sure you remove any leftovers from the previous build.
That line that says "Qt will be installed into" just ends in space. Have I missed something else now?
If you used the same line as in your initial post, you are doing a developer build and hence it won't be installed. It's an "in place" build.
Unless you want to hack on Qt, you should drop that option as it changes some flags (I don't remember which though).
@SGaist "If you used the same line as in your initial post"
Arrgh, yes I did. OK, we start over again. This time:/opt/qt5/qt5-build $ ../configure -opensource -nomake examples -nomake tests -platform solaris-g++
This also worked. Now starting gmake -j16 again.
UPDATE:
It just doesn't seem to like qvncscreen.cpp:/opt/qt5/qtbase/src/plugins/platforms/vnc/qvncscreen.cpp: In member function ‘bool QVncScreen::swapBytes() const’: /opt/qt5/qtbase/src/plugins/platforms/vnc/qvncscreen.cpp:182:24: error: invalid use of incomplete type ‘class QScreen’ 182 | return screen()->frameBufferLittleEndian(); | ^~ In file included from ../../../../include/QtGui/qcursor.h:1, from ../../../../include/QtGui/5.8.0/QtGui/qpa/../../../../../../../qtbase/src/gui/kernel/qplatformscreen.h:60, from ../../../../include/QtGui/5.8.0/QtGui/qpa/qplatformscreen.h:1, from ../../../../include/QtFbSupport/5.8.0/QtFbSupport/private/../../../../../../../qtbase/src/platformsupport/fbconvenience/qfbscreen_p.h:54, from ../../../../include/QtFbSupport/5.8.0/QtFbSupport/private/qfbscreen_p.h:1, from /opt/qt5/qtbase/src/plugins/platforms/vnc/qvncscreen.h:43, from /opt/qt5/qtbase/src/plugins/platforms/vnc/qvncscreen.cpp:40: ../../../../include/QtGui/../../../../qtbase/src/gui/kernel/qcursor.h:51:7: note: forward declaration of ‘class QScreen’ 51 | class QScreen; | ^~~~~~~ /opt/qt5/qtbase/src/plugins/platforms/vnc/qvncscreen.cpp:183:12: error: ‘frameBufferLittleEndian’ was not declared in this scope 183 | return frameBufferLittleEndian(); | ^~~~~~~~~~~~~~~~~~~~~~~ gmake[5]: *** [Makefile:2355: .obj/qvncscreen.o] Error 1 gmake[5]: Leaving directory '/opt/qt5/qt5-build/qtbase/src/plugins/platforms/vnc' gmake[4]: *** [Makefile:121: sub-vnc-make_first] Error 2 gmake[4]: Leaving directory '/opt/qt5/qt5-build/qtbase/src/plugins/platforms' gmake[3]: *** [Makefile:100: sub-platforms-make_first] Error 2 gmake[3]: Leaving directory '/opt/qt5/qt5-build/qtbase/src/plugins' gmake[2]: *** [Makefile:669: sub-plugins-make_first] Error 2 gmake[2]: Leaving directory '/opt/qt5/qt5-build/qtbase/src' gmake[1]: *** [Makefile:47: sub-src-make_first] Error 2 gmake[1]: Leaving directory '/opt/qt5/qt5-build/qtbase' gmake: *** [Makefile:85: module-qtbase-make_first] Error 2 /opt/qt5/qt5-build $
And indeed this seems to be MIA:
/opt/qt5 $ ggrep -rl "frameBufferLittleEndian" . ./qtbase/src/plugins/platforms/vnc/qvncscreen.cpp /opt/qt5 $
-
@Michele31415 said in QT5 build: CC: No such file or directory:
frameBufferLittleEndian
You might be the first person building that plugin on a big endian system.
AFAIK, that call should be commented out with a Todo comment and the method do nothing and return false.
I'd recommend doing that so your build can continue.
-
I was actually wondering about that. So I've now changed that block at the end of qvncscreen.cpp to read
#if Q_BYTE_ORDER == Q_BIG_ENDIAN bool QVncScreen::swapBytes() const //bool QVNCScreen::swapBytes() const { if (depth() != 16) return false; // if (screen()) // return screen()->frameBufferLittleEndian(); // return frameBufferLittleEndian(); return false ; } #endif
Now we're getting
/opt/qt5/qtbase/src/plugins/platforms/vnc/qvncclient.cpp:642:9: error: ‘qvnc_screen’ was not declared in this scope 642 | if (qvnc_screen->swapBytes())
I'll have to see if qvnc_screen is actually declared anywhere.
-
I was actually wondering about that. So I've now changed that block at the end of qvncscreen.cpp to read
#if Q_BYTE_ORDER == Q_BIG_ENDIAN bool QVncScreen::swapBytes() const //bool QVNCScreen::swapBytes() const { if (depth() != 16) return false; // if (screen()) // return screen()->frameBufferLittleEndian(); // return frameBufferLittleEndian(); return false ; } #endif
Now we're getting
/opt/qt5/qtbase/src/plugins/platforms/vnc/qvncclient.cpp:642:9: error: ‘qvnc_screen’ was not declared in this scope 642 | if (qvnc_screen->swapBytes())
I'll have to see if qvnc_screen is actually declared anywhere.
I had to comment this out in qvncclient.cpp (probably not a good thing to do but I don't know what this is for and I don't really need VNC in QT anyway)::
#if Q_BYTE_ORDER == Q_BIG_ENDIAN // m_swapBytes = qvnc_screen->swapBytes(); #endif
Now it's finally linking but still not happy with some qtserialbus stuff:
/opt/qt5/qt5-build/qtserialbus/lib/libQt5SerialBus.sold: fatal: symbol referencing errors ld: fatal: symbol referencing errors collect2: error: ld returned 1 exit status collect2: error: ld returned 1 exit status gmake[5]: *** [Makefile:74: ../../../../plugins/canbus/libqtpeakcanbus.so] Error 1 gmake[5]: Leaving directory '/opt/qt5/qt5-build/qtserialbus/src/plugins/canbus/peakcan' gmake[5]: *** [Makefile:74: ../../../../plugins/canbus/libqttinycanbus.so] Error 1 gmake[5]: Leaving directory '/opt/qt5/qt5-build/qtserialbus/src/plugins/canbus/tinycan' gmake[4]: *** [Makefile:69: sub-tinycan-make_first] Error 2 gmake[4]: *** Waiting for unfinished jobs.... gmake[4]: *** [Makefile:44: sub-peakcan-make_first] Error 2 gmake[4]: Leaving directory '/opt/qt5/qt5-build/qtserialbus/src/plugins/canbus' gmake[3]: *** [Makefile:43: sub-canbus-make_first] Error 2 gmake[3]: Leaving directory '/opt/qt5/qt5-build/qtserialbus/src/plugins' gmake[2]: *** [Makefile:70: sub-plugins-make_first] Error 2 gmake[2]: Leaving directory '/opt/qt5/qt5-build/qtserialbus/src' gmake[1]: *** [Makefile:45: sub-src-make_first] Error 2 gmake[1]: Leaving directory '/opt/qt5/qt5-build/qtserialbus' gmake: *** [Makefile:235: module-qtserialbus-make_first] Error 2
I'm not particularly interested in the serial bus. Can I exclude this somehow? I grepped the configure --help for "serial" but came up empty.
-
You can add a
-skip <module_to_skip>
to the configure command for all modules you do not want to build.When you have such build error, you should restart the build single threaded so you get the exact point where it failed. Here it is lost somewhere in one of the threads used for the build process.
-
You can add a
-skip <module_to_skip>
to the configure command for all modules you do not want to build.When you have such build error, you should restart the build single threaded so you get the exact point where it failed. Here it is lost somewhere in one of the threads used for the build process.
@SGaist The errors seem to be in qtserialbus and MathExtras, Are those the names I'd put in -skip? (Or is there an easy fix for these?)
...ld: warning: ld: warning: file libQt5SerialPort.so.5: required by /opt/qt5/qt5-build/qtserialbus/lib/libQt5SerialBus.so, not found ... /opt/qt5/qtdeclarative/src/3rdparty/masm/wtf/MathExtras.h: At global scope: /opt/qt5/qtdeclarative/src/3rdparty/masm/wtf/MathExtras.h:96:13: error: redefinition of ‘bool std::isfinite(double)’ ... In file included from /opt/qt5/qtdeclarative/src/qml/compiler/qv4compiler.cpp:46: /opt/qt5/qtdeclarative/src/3rdparty/masm/wtf/MathExtras.h:99:13: error: redefinition of ‘bool std::signbit(double)’ ... In file included from /opt/qt5/qtdeclarative/src/qml/compiler/qv4compiler.cpp:46: /opt/qt5/qtdeclarative/src/3rdparty/masm/wtf/MathExtras.h:102:13: error: redefinition of ‘bool std::isinf(double)’
-
The skip option is only for module names.
As for the Qt declarative issue... gcc 10 is supported on Linux so it does look a bit strange...
-
What name should I give configure -skip to exclude the requirement for libQt5SerialPort.so?
Oh wait a minute, I do have that library:/opt/qt5/qt5-build/qtserialbus/lib $ ls cmake libQt5SerialBus.so libQt5SerialBus.so.5.8.0 libQt5SerialBus.la libQt5SerialBus.so.5 pkgconfig libQt5SerialBus.prl libQt5SerialBus.so.5.8 /opt/qt5/qt5-build/qtserialbus/lib $
So why is it saying:
g++ -z defs -Wl,-R,/lib -shared -o libqttinycanbus.so .obj/main.o .obj/tinycanbackend.o .obj/moc_tinycanbackend.o -L/usr/sfw/lib -L/opt/qt5/qt5-build/qtserialbus/lib -lQt5SerialBus -L/opt/qt5/qt5-build/qtbase/lib -lQt5Core -lpthread -lrt ld: warning: ld: warning: file libQt5SerialPort.so.5: required by /opt/qt5/qt5-build/qtserialbus/lib/libQt5SerialBus.so, not found file libQt5SerialPort.so.5: required by /opt/qt5/qt5-build/qtserialbus/lib/libQt5SerialBus.so, not found Undefined first referenced symbol in file _ZN11QSerialPort9setParityENS_6ParityE /opt/qt5/qt5-build/qtserialbus/lib/libQt5SerialBus.so Undefined first referenced symbol in file _ZN11QSerialPort11setStopBitsENS_8StopBitsE /opt/qt5/qt5-build/qtserialbus/lib/libQt5SerialBus.so _ZN11QSerialPort9setParityENS_6ParityE /opt/qt5/qt5-build/qtserialbus/lib/libQt5SerialBus.so _ZN11QSerialPort5clearE6QFlagsINS_9DirectionEE /opt/qt5/qt5-build/qtserialbus/lib/libQt5SerialBus.so _ZN11QSerialPort11setStopBitsENS_8StopBitsE /opt/qt5/qt5-build/qtserialbus/lib/libQt5SerialBus.so _ZN11QSerialPort11setBaudRateEi6QFlagsINS_9DirectionEE _ZN11QSerialPort5clearE6QFlagsINS_9DirectionEE/opt/qt5/qt5-build/qtserialbus/lib/libQt5SerialBus.so /opt/qt5/qt5-build/qtserialbus/lib/libQt5SerialBus.so _ZN11QSerialPortC1EP7QObject /opt/qt5/qt5-build/qtserialbus/lib/libQt5SerialBus.so _ZN11QSerialPort11setBaudRateEi6QFlagsINS_9DirectionEE /opt/qt5/qt5-build/qtserialbus/lib/libQt5SerialBus.so _ZN11QSerialPort11setDataBitsENS_8DataBitsE /opt/qt5/qt5-build/qtserialbus/lib/libQt5SerialBus.so _ZN11QSerialPortC1EP7QObject_ZN11QSerialPort5errorENS_15SerialPortErrorE /opt/qt5/qt5-build/qtserialbus/lib/libQt5SerialBus.so _ZN11QSerialPort16staticMetaObjectE /opt/qt5/qt5-build/qtserialbus/lib/libQt5SerialBus.so /opt/qt5/qt5-build/qtserialbus/lib/libQt5SerialBus.so _ZN11QSerialPort11setPortNameERK7QString_ZN11QSerialPort11setDataBitsENS_8DataBitsE /opt/qt5/qt5-build/qtserialbus/lib/libQt5SerialBus.so _ZN11QSerialPort5errorENS_15SerialPortErrorE /opt/qt5/qt5-build/qtserialbus/lib/libQt5SerialBus.so /opt/qt5/qt5-build/qtserialbus/lib/libQt5SerialBus.so_ZN11QSerialPort16staticMetaObjectE /opt/qt5/qt5-build/qtserialbus/lib/libQt5SerialBus.so _ZN11QSerialPort11setPortNameERK7QStringld: /opt/qt5/qt5-build/qtserialbus/lib/libQt5SerialBus.sofatal: symbol referencing errors ld: fatal: symbol referencing errors
-
"-skip qtserialbus" for example.
Looks like your machine goes too fast :-D
Try building the qtserialport module before qtserialbus
You can use "make -C qtserialport" and then go on with your build.
-
"-skip qtserialbus" for example.
Looks like your machine goes too fast :-D
Try building the qtserialport module before qtserialbus
You can use "make -C qtserialport" and then go on with your build.
@SGaist That worked:
/opt/qt5/qt5-build $ gmake -C qtserialport gmake: Entering directory '/opt/qt5/qt5-build/qtserialport' cd src/ && ( test -e Makefile || /opt/qt5/qt5-build/qtbase/bin/qmake -o Makefile /opt/qt5/qtserialport/src/src.pro -qtconf /opt/qt5/qt5-build/qtbase/bin/qt.conf -- -opensource -nomake examples -nomake tests -platform solaris-g++ ) && gmake -f Makefile gmake[1]: Entering directory '/opt/qt5/qt5-build/qtserialport/src' cd serialport/ && ( test -e Makefile || /opt/qt5/qt5-build/qtbase/bin/qmake -o Makefile /opt/qt5/qtserialport/src/serialport/serialport.pro -qtconf /opt/qt5/qt5-build/qtbase/bin/qt.conf -- -opensource -nomake examples -nomake tests -platform solaris-g++ ) && gmake -f Makefile gmake[2]: Entering directory '/opt/qt5/qt5-build/qtserialport/src/serialport' gmake[2]: Nothing to be done for 'first'. gmake[2]: Leaving directory '/opt/qt5/qt5-build/qtserialport/src/serialport' gmake[1]: Leaving directory '/opt/qt5/qt5-build/qtserialport/src' gmake: Leaving directory '/opt/qt5/qt5-build/qtserialport' /opt/qt5/qt5-build $
I'm doing the gmake over again without -j anything. Even though I don't think -j16 is particularly ambitious, sometimes it gets ahead of itself. It just takes forever with only one CPU on the job.
-
What I do is usually start with multithreaded and if it fails go back to single threaded, fix the issue and start again with multithreaded.