QT5 build: CC: No such file or directory
-
Based on the mkspecs available, I would try the solaris-g++ or solaris-g++-64.
-
DING!! Give that man a ceegar! Thank you so much.
...(bunch of stuff) ... Qt WebEngine: Proprietary Codecs ..................... no Spellchecker ........................... yes ALSA ................................... no PulseAudio ............................. no Note: No wayland-egl support detected. Cross-toolkit compatibility disabled. **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. /opt/qt5/qt5-build $
For the record, this is the command that worked:
/opt/qt5/qt5-build $ ../configure -developer-build -opensource -nomake examples -nomake tests -platform solaris-g++
I'm so happy I'm just going to let it go for now and wait til tomorrow to try the gmake :-)
I am wondering about that "remove any leftovers" comment. Is that anything in particular?
-
Well gmake ran for a long time but finally gave up. This is the tail of the tale:
../../../../include/QtGui/../../../../qtbase/src/gui/painting/qtransform.h:57:20: note: ‘class QTransform’ declared here 57 | class Q_GUI_EXPORT QTransform | ^~~~~~~~~~ ../../../../include/QtGui/../../../../qtbase/src/gui/painting/qtransform.h: In copy constructor ‘QTransform::QTransform(const QTransform&)’: ../../../../include/QtGui/../../../../qtbase/src/gui/painting/qtransform.h:88:46: warning: ‘void* std::memcpy(void*, const void*, std::size_t)’ writing to an object of type ‘class QTransform’ with no trivial copy-assignment; use copy-assignment or copy-initialization instead []8;;https://gcc.gnu.org/onlinedocs/gcc/Warning-Options.html#index-Wclass-memaccess-Wclass-memaccess]8;;] 88 | { memcpy(this, &other, sizeof(QTransform)); } | ^ ../../../../include/QtGui/../../../../qtbase/src/gui/painting/qtransform.h:57:20: note: ‘class QTransform’ declared here 57 | class Q_GUI_EXPORT QTransform | ^~~~~~~~~~ In file included from /opt/qt5/qtbase/src/plugins/platforms/vnc/qvnc_p.h:43, from /opt/qt5/qtbase/src/plugins/platforms/vnc/main.cpp:42: /opt/qt5/qtbase/src/plugins/platforms/vnc/qvncscreen.h: At global scope: /opt/qt5/qtbase/src/plugins/platforms/vnc/qvncscreen.h:76:22: error: expected ‘;’ at end of member declaration 76 | bool swapBytes() const | ^~~~~ | ; gmake[5]: *** [Makefile:1665: .obj/main.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:695: 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:89: module-qtbase-make_first] Error 2 /opt/qt5/qt5-build $
-
So I gave qvncscreen.h the semicolon it was missing:
#if Q_BYTE_ORDER == Q_BIG_ENDIAN bool swapBytes() const ; #endif
and tried again. Now we get:
g++ -c -g -Wall -W -D_REENTRANT -fPIC -DQT_NO_EXCEPTIONS -D_LARGEFILE64_SOURCE -D_LARGEFILE_SOURCE -DQT_PLUGIN -DQT_GUI_LIB -DQT_DBUS_LIB -DQT_CORE_LIB -I/opt/qt5/qtbase/src/plugins/platforminputcontexts/ibus -I. -I../../../../include/QtGui/5.8.0 -I../../../../include/QtGui/5.8.0/QtGui -I../../../../include -I../../../../include/QtGui -I../../../../include/QtDBus -I../../../../include/QtCore/5.8.0 -I../../../../include/QtCore/5.8.0/QtCore -I../../../../include/QtCore -I.moc -I/opt/csw/include -I/usr/openwin/include -I/usr/sfw/include -I/opt/qt5/qtbase/mkspecs/solaris-g++ -o .obj/qibusproxy.o /opt/qt5/qtbase/src/plugins/platforminputcontexts/ibus/qibusproxy.cpp /opt/qt5/qtbase/src/plugins/platforms/vnc/qvncclient.cpp: In member function ‘void QVncClient::convertPixels(char*, const char*, int) const’: /opt/qt5/qtbase/src/plugins/platforms/vnc/qvncclient.cpp:145:17: error: ‘swapBytes’ was not declared in this scope; did you mean ‘m_swapBytes’? 145 | if (swapBytes) | ^~~~~~~~~ | m_swapBytes
-
Just add the missing ; and go on with your build.
I don't know why it's not there both the dev and latest 5.15 branch have it.
-
Just add the missing ; and go on with your build.
I don't know why it's not there both the dev and latest 5.15 branch have it.
@SGaist OK, I changed swapBytes to m_swapBytes (which is how it appears everywhere else) and that went away. Now:
88 | { memcpy(this, &other, sizeof(QTransform)); } | ^ ../../../../include/QtGui/../../../../qtbase/src/gui/painting/qtransform.h:57:20: note: ‘class QTransform’ declared here 57 | class Q_GUI_EXPORT QTransform | ^~~~~~~~~~ /opt/qt5/qtbase/src/plugins/platforms/vnc/qvncclient.cpp: In member function ‘void QVncClient::setPixelFormat()’: /opt/qt5/qtbase/src/plugins/platforms/vnc/qvncclient.cpp:487:23: error: ‘qvnc_screen’ was not declared in this scope 487 | m_swapBytes = qvnc_screen->swapBytes(); | ^~~~~~~~~~~ /opt/qt5/qtbase/src/plugins/platforms/vnc/qvncclient.cpp: In member function ‘bool QVncClient::pixelConversionNeeded() const’: /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()) | ^~~~~~~~~~~ /opt/qt5/qtbase/src/plugins/platforms/vnc/qvncscreen.cpp: At global scope: /opt/qt5/qtbase/src/plugins/platforms/vnc/qvncscreen.cpp:175:6: error: ‘QVNCScreen’ has not been declared 175 | bool QVNCScreen::swapBytes() const | ^~~~~~~~~~ /opt/qt5/qtbase/src/plugins/platforms/vnc/qvncscreen.cpp:175:30: error: non-member function ‘bool swapBytes()’ cannot have cv-qualifier 175 | bool QVNCScreen::swapBytes() const | ^~~~~ /opt/qt5/qtbase/src/plugins/platforms/vnc/qvncscreen.cpp: In function ‘bool swapBytes()’: /opt/qt5/qtbase/src/plugins/platforms/vnc/qvncscreen.cpp:177:9: error: ‘depth’ was not declared in this scope 177 | if (depth() != 16) | ^~~~~ /opt/qt5/qtbase/src/plugins/platforms/vnc/qvncscreen.cpp:180:9: error: ‘screen’ was not declared in this scope; did you mean ‘qGreen’? 180 | if (screen()) | ^~~~~~ | qGreen /opt/qt5/qtbase/src/plugins/platforms/vnc/qvncscreen.cpp:182:12: error: ‘frameBufferLittleEndian’ was not declared in this scope 182 | return frameBufferLittleEndian(); | ^~~~~~~~~~~~~~~~~~~~~~~ gmake[5]: *** [Makefile:2889: .obj/qvncclient.o] Error 1 gmake[5]: *** Waiting for unfinished jobs....
-
Which version of Qt are you building ?
I would have rather added the missing parenthesis in this case.
-
Which version of Qt are you building ?
I would have rather added the missing parenthesis in this case.
@SGaist I'm building what
git clone https://code.qt.io/qt/qt5.git
gave me two days ago. Where does it tell you what version you have? Which missing parentheses?
Should this line in qvncscreen.cppbool QVNCScreen::swapBytes() const
perhaps be
bool QVncScreen::swapBytes() const
because further up I see
QVncScreen::~QVncScreen() { if (clientCursor) delete clientCursor; }
-
Ok, so you are in fact building the dev branch which is Qt 6. So is that what you want ?
I am currently wondering whether you have something that changed these files. Looking at the sources, I do not see these errors in the vnc plugin.
-
Ok, so you are in fact building the dev branch which is Qt 6. So is that what you want ?
I am currently wondering whether you have something that changed these files. Looking at the sources, I do not see these errors in the vnc plugin.
@SGaist Um, I'm building QT6?? How could that be? My build directory is called:
/opt/qt5/qt5-build $
I'm following directions from https://wiki.qt.io/Building_Qt_5_from_Git Now I'm confused. -
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 $