[Interest] building Qt 4.8.7 with gcc 5 and link-time optimisation on Linux

René J.V. Bertin rjvbertin at gmail.com
Thu Jul 23 11:01:58 CEST 2015


Thiago Macieira wrote:

> That's qhash.cpp (the only place where we use _mm_crc32_xxx()).
> 
> This sounds like qhash.cpp was compiled with -march=native but *linked*
> without. Can you confirm that you see the compiler options passed on the
> linker command-line (-O2 -march=native, etc.)?

Well, even if you were right, something else appears to be going on. Wouldn't it be simply the same issue that makes it impossible to build QtScript and QtWebkit with LTO, the use of inline assembly? That's very likely what the _mm_ intrinsics macros contain. OTOH, if you use them for SSE <4 too that cannot be the whole explanation.

Here are all commands involving qhasp.cpp from my latest build log:

:info:build /usr/bin/clang++ -c -O3 -march=native -g -ffunction-sections -fPIC -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.10.sdk -std=c++11 -stdlib=libc++ -mmacosx-version-min=10.7 -fno-exceptions -Wall -W -DQT_NO_MTDEV -DQT_NO_LIBUDEV -DQT_NO_EVDEV -DQT_BOOTSTRAPPED -DQT_LITE_UNICODE -DQT_NO_CAST_TO_ASCII -DQT_NO_CODECS -DQT_NO_DATASTREAM -DQT_NO_LIBRARY -DQT_NO_QOBJECT -DQT_NO_SYSTEMLOCALE -DQT_NO_THREAD -DQT_NO_UNICODETABLES -DQT_NO_USING_NAMESPACE -DQT_NO_DEPRECATED -DQT_NO_TRANSLATION -DQT_QMAKE_LOCATION=\"/opt/local/var/macports/build/qt5-kde-x11/build/bin/qmake\" -DQT_CRYPTOGRAPHICHASH_ONLY_SHA1 -DQT_NO_CAST_FROM_ASCII -DQT_BUILD_BOOTSTRAP_LIB -DQT_BUILDING_QT -DQT_ASCII_CAST_WARNINGS -DQT_MOC_COMPAT -DQT_USE_QSTRINGBUILDER -DQT_DEPRECATED_WARNINGS -DQT_DISABLE_DEPRECATED_BEFORE=0x050000 -DQT_NO_EXCEPTIONS -D_LARGEFILE64_SOURCE -D_LARGEFILE_SOURCE -DQT_NO_DEBUG -I/opt/local/var/macports/build/qt5-kde-x11/qt-everywhere-opensource-src-5.4.2/qtbase/src/tools/bootstrap -I. -I/opt/local/var/macports/build/qt5-kde-x11/qt-everywhere-opensource-src-5.4.2/qtbase/include -I/opt/local/var/macports/build/qt5-kde-x11/qt-everywhere-opensource-src-5.4.2/qtbase/include/QtCore -I/opt/local/var/macports/build/qt5-kde-x11/qt-everywhere-opensource-src-5.4.2/qtbase/include/QtXml -I/opt/local/var/macports/build/qt5-kde-x11/qt-everywhere-opensource-src-5.4.2/qtbase/include/QtCore/5.4.2 -I/opt/local/var/macports/build/qt5-kde-x11/qt-everywhere-opensource-src-5.4.2/qtbase/include/QtCore/5.4.2/QtCore -I/opt/local/var/macports/build/qt5-kde-x11/qt-everywhere-opensource-src-5.4.2/qtbase/include/QtXml/5.4.2 -I/opt/local/var/macports/build/qt5-kde-x11/qt-everywhere-opensource-src-5.4.2/qtbase/include/QtXml/5.4.2/QtXml -I../../../include -I../../../include/QtCore -I/opt/local/var/macports/build/qt5-kde-x11/build/include/QtXml -I/opt/local/var/macports/build/qt5-kde-x11/qt-everywhere-opensource-src-5.4.2/qtbase/mkspecs/macx-clang -o .obj/qhash.o /opt/local/var/macports/build/qt5-kde-x11/qt-everywhere-opensource-src-5.4.2/qtbase/src/corelib/tools/qhash.cpp
[...]
:info:build /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ar cq libQt5Bootstrap.a .obj/qstring_mac.o .obj/qstandardpaths_mac.o .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/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/qpoint.o .obj/qrect.o .obj/qsize.o .obj/qline.o .obj/qstring.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/qcoreapplication_mac.o .obj/qcore_mac.o
:info:build /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ranlib: file: libQt5Bootstrap.a(qvector.o) has no symbols
:info:build /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ranlib -s libQt5Bootstrap.a
:info:build /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ranlib: file: libQt5Bootstrap.a(qvector.o) has no symbols
:info:build rm -f ../../../lib/libQt5Bootstrap.a
:info:build mv -f libQt5Bootstrap.a ../../../lib/ 

(note how the bootstrap build uses the 10.10 SDK while I'm pretty sure I told configure to use the 10.9 SDK ...)

These are probably the ones of interest:

:info:build /usr/bin/clang++ -c -O3 -march=native -g -D_REENTRANT -I/opt/local/include/glib-2.0 -I/opt/local/lib/glib-2.0/include -I/opt/local/include -O3 -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk -std=c++11 -stdlib=libc++ -mmacosx-version-min=10.7 -fvisibility=hidden -fvisibility-inlines-hidden -flto -Wall -W -fPIC -DQT_NO_MTDEV -DQT_NO_LIBUDEV -DQT_NO_EVDEV -DQT_NO_USING_NAMESPACE -DQT_BUILD_CORE_LIB -DQT_BUILDING_QT -DQT_NO_CAST_TO_ASCII -DQT_ASCII_CAST_WARNINGS -DQT_MOC_COMPAT -DQT_USE_QSTRINGBUILDER -DQT_DEPRECATED_WARNINGS -DQT_DISABLE_DEPRECATED_BEFORE=0x050000 -DQT_USE_ICU -DQT_CORE_LIB -D_LARGEFILE64_SOURCE -D_LARGEFILE_SOURCE -DQT_NO_DEBUG -I/opt/local/var/macports/build/qt5-kde-x11/qt-everywhere-opensource-src-5.4.2/qtbase/src/corelib -I. -I/opt/local/var/macports/build/qt5-kde-x11/qt-everywhere-opensource-src-5.4.2/qtbase/include -I/opt/local/var/macports/build/qt5-kde-x11/qt-everywhere-opensource-src-5.4.2/qtbase/include/QtCore -I../../include -I../../include/QtCore -I/opt/local/var/macports/build/qt5-kde-x11/qt-everywhere-opensource-src-5.4.2/qtbase/include/QtCore/5.4.2 -I/opt/local/var/macports/build/qt5-kde-x11/qt-everywhere-opensource-src-5.4.2/qtbase/include/QtCore/5.4.2/QtCore -Iglobal -I/opt/local/var/macports/build/qt5-kde-x11/qt-everywhere-opensource-src-5.4.2/qtbase/src/3rdparty/harfbuzz/src -I/opt/local/var/macports/build/qt5-kde-x11/qt-everywhere-opensource-src-5.4.2/qtbase/src/3rdparty/md5 -I/opt/local/var/macports/build/qt5-kde-x11/qt-everywhere-opensource-src-5.4.2/qtbase/src/3rdparty/md4 -I/opt/local/var/macports/build/qt5-kde-x11/qt-everywhere-opensource-src-5.4.2/qtbase/src/3rdparty/sha3 -I.moc -I/opt/local/var/macports/build/qt5-kde-x11/qt-everywhere-opensource-src-5.4.2/qtbase/mkspecs/macx-clang -o .obj/qhash.o /opt/local/var/macports/build/qt5-kde-x11/qt-everywhere-opensource-src-5.4.2/qtbase/src/corelib/tools/qhash.cpp
[...]
:info:build /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang++ -L/opt/local/lib -Wl,-headerpad_max_install_names -O3 -march=native -g -Wl,-syslibroot,/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk -stdlib=libc++ -mmacosx-version-min=10.7 -D_REENTRANT -I/opt/local/include/glib-2.0 -I/opt/local/lib/glib-2.0/include -I/opt/local/include -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk -std=c++11 -fvisibility=hidden -fvisibility-inlines-hidden -flto -single_module -dynamiclib -fPIC -compatibility_version	5.4 -current_version	5.4.2 -install_name	/opt/local/libexec/qt5/Library/Frameworks/QtCore.framework/Versions/5/QtCore -o QtCore .obj/qlocale_mac.o .obj/qtimezoneprivate_mac.o .obj/qstring_mac.o .obj/qbytearray_mac.o .obj/qurl_mac.o .obj/qfilesystemwatcher_fsevents.o .obj/qstandardpaths_mac.o .obj/qcore_mac_objc.o .obj/qabstractanimation.o .obj/qvariantanimation.o .obj/qpropertyanimation.o .obj/qanimationgroup.o .obj/qsequentialanimationgroup.o .obj/qparallelanimationgroup.o .obj/qpauseanimation.o .obj/qatomic_unix.o .obj/qglobal.o .obj/qglobalstatic.o .obj/qlibraryinfo.o .obj/qmalloc.o .obj/qnumeric.o .obj/qlogging.o .obj/qhooks.o .obj/qatomic.o .obj/qexception.o .obj/qresultstore.o .obj/qfutureinterface.o .obj/qfuturewatcher.o .obj/qmutex.o .obj/qreadwritelock.o .obj/qrunnable.o .obj/qmutexpool.o .obj/qsemaphore.o .obj/qthread.o .obj/qthreadpool.o .obj/qthreadstorage.o .obj/qthread_unix.o .obj/qwaitcondition_unix.o .obj/qarraydata.o .obj/qbitarray.o .obj/qbytearray.o .obj/qbytearraylist.o .obj/qbytearraymatcher.o .obj/qcollator.o .obj/qcommandlineoption.o .obj/qcommandlineparser.o .obj/qcryptographichash.o .obj/qdatetime.o .obj/qdatetimeparser.o .obj/qeasingcurve.o .obj/qelapsedtimer.o .obj/qfreelist.o .obj/qhash.o .obj/qline.o .obj/qlinkedlist.o .obj/qlist.o .obj/qlocale.o .obj/qlocale_tools.o .obj/qpoint.o .obj/qmap.o .obj/qmargins.o .obj/qmessageauthenticationcode.o .obj/qcontiguouscache.o .obj/qrect.o .obj/qregexp.o .obj/qrefcount.o .obj/qshareddata.o .obj/qsharedpointer.o .obj/qsimd.o .obj/qsize.o .obj/qstring.o .obj/qstringbuilder.o .obj/qstringlist.o .obj/qtextboundaryfinder.o .obj/qtimeline.o .obj/qtimezone.o .obj/qtimezoneprivate.o .obj/qunicodetools.o .obj/qvector.o .obj/qvsnprintf.o .obj/qversionnumber.o .obj/qelapsedtimer_mac.o .obj/qlocale_icu.o .obj/qcollator_icu.o .obj/qtimezoneprivate_icu.o .obj/qregularexpression.o .obj/harfbuzz-buffer.o .obj/harfbuzz-gdef.o .obj/harfbuzz-gsub.o .obj/harfbuzz-gpos.o .obj/harfbuzz-impl.o .obj/harfbuzz-open.o .obj/harfbuzz-stream.o .obj/harfbuzz-shaper-all.o .obj/qharfbuzz.o .obj/qabstractfileengine.o .obj/qbuffer.o .obj/qdatastream.o .obj/qdataurl.o .obj/qtldurl.o .obj/qdebug.o .obj/qdir.o .obj/qdiriterator.o .obj/qfile.o .obj/qfiledevice.o .obj/qfileinfo.o .obj/qipaddress.o .obj/qiodevice.o .obj/qlockfile.o .obj/qnoncontiguousbytedevice.o .obj/qprocess.o .obj/qstorageinfo.o .obj/qtextstream.o .obj/qtemporarydir.o .obj/qtemporaryfile.o .obj/qresource.o .obj/qresource_iterator.o .obj/qsavefile.o .obj/qstandardpaths.o .obj/qurl.o .obj/qurlidna.o .obj/qurlquery.o .obj/qurlrecode.o .obj/qsettings.o .obj/qfsfileengine.o .obj/qfsfileengine_iterator.o .obj/qfilesystemwatcher.o .obj/qfilesystemwatcher_polling.o .obj/qfilesystementry.o .obj/qfilesystemengine.o .obj/qfileselector.o .obj/qloggingcategory.o .obj/qloggingregistry.o .obj/qfsfileengine_unix.o .obj/qfilesystemengine_unix.o .obj/qlockfile_unix.o .obj/qprocess_unix.o .obj/qfilesystemiterator_unix.o .obj/qsettings_mac.o .obj/qstorageinfo_mac.o .obj/qfilesystemwatcher_kqueue.o .obj/qabstractitemmodel.o .obj/qabstractproxymodel.o .obj/qitemselectionmodel.o .obj/qidentityproxymodel.o .obj/qsortfilterproxymodel.o .obj/qstringlistmodel.o .obj/qjson.o .obj/qjsondocument.o .obj/qjsonobject.o .obj/qjsonarray.o .obj/qjsonvalue.o .obj/qjsonwriter.o .obj/qjsonparser.o .obj/qpluginloader.o .obj/qfactoryloader.o .obj/quuid.o .obj/qlibrary.o .obj/qelfparser_p.o .obj/qmachparser.o .obj/qlibrary_unix.o .obj/qabstracteventdispatcher.o .obj/qabstractnativeeventfilter.o .obj/qbasictimer.o .obj/qeventloop.o .obj/qcoreapplication.o .obj/qcoreevent.o .obj/qmetaobject.o .obj/qmetatype.o .obj/qmetaobjectbuilder.o .obj/qmimedata.o .obj/qobject.o .obj/qobjectcleanuphandler.o .obj/qsignalmapper.o .obj/qsocketnotifier.o .obj/qtimer.o .obj/qtranslator.o .obj/qvariant.o .obj/qcoreglobaldata.o .obj/qsharedmemory.o .obj/qsystemsemaphore.o .obj/qpointer.o .obj/qmath.o .obj/qsystemerror.o .obj/qcoreapplication_mac.o .obj/qcore_mac.o .obj/qcore_unix.o .obj/qcrashhandler.o .obj/qeventdispatcher_unix.o .obj/qtimerinfo_unix.o .obj/qeventdispatcher_glib.o .obj/qsharedmemory_unix.o .obj/qsystemsemaphore_unix.o .obj/qisciicodec.o .obj/qlatincodec.o .obj/qtextcodec.o .obj/qtsciicodec.o .obj/qutfcodec.o .obj/qicucodec.o .obj/qstatemachine.o .obj/qabstractstate.o .obj/qstate.o .obj/qfinalstate.o .obj/qhistorystate.o .obj/qabstracttransition.o .obj/qsignaltransition.o .obj/qeventtransition.o .obj/qmimedatabase.o .obj/qmimetype.o .obj/qmimemagicrulematcher.o .obj/qmimetypeparser.o .obj/qmimemagicrule.o .obj/qmimeglobpattern.o .obj/qmimeprovider.o .obj/qxmlstream.o .obj/qxmlutils.o .obj/qstring_compat.o .obj/qrc_mimetypes.o .obj/moc_qabstractanimation_p.o .obj/moc_qnamespace.o .obj/moc_qthread.o .obj/moc_qthreadpool.o .obj/moc_qfuturewatcher.o .obj/moc_qeasingcurve.o .obj/moc_qlocale.o .obj/moc_qtimeline.o .obj/moc_qfile.o .obj/moc_qfiledevice.o .obj/moc_qiodevice.o .obj/moc_qnoncontiguousbytedevice_p.o .obj/moc_qtextstream_p.o .obj/moc_qtemporaryfile.o .obj/moc_qsavefile.o .obj/moc_qsettings.o .obj/moc_qfilesystemwatcher_p.o .obj/moc_qfilesystemwatcher_polling_p.o .obj/moc_qfilesystemwatcher_fsevents_p.o .obj/moc_qfilesystemwatcher_kqueue_p.o .obj/moc_qabstractitemmodel.o .obj/moc_qstringlistmodel.o .obj/moc_qpluginloader.o .obj/moc_qlibrary.o .obj/moc_qfactoryloader_p.o .obj/moc_qabstracteventdispatcher.o .obj/moc_qeventloop.o .obj/moc_qcoreapplication.o .obj/moc_qcoreevent.o .obj/moc_qmimedata.o .obj/moc_qsocketnotifier.o .obj/moc_qtimer.o .obj/moc_qtranslator.o .obj/moc_qobjectcleanuphandler.o .obj/moc_qsharedmemory.o .obj/moc_qeventdispatcher_unix_p.o .obj/moc_qeventdispatcher_glib_p.o .obj/moc_qabstractstate.o .obj/moc_qstate.o .obj/moc_qfinalstate.o .obj/moc_qhistorystate.o .obj/moc_qabstracttransition.o .obj/moc_qsignaltransition.o .obj/moc_qeventtransition.o  -framework DiskArbitration -framework IOKit -lz -licui18n -licuuc -licudata -lpcre16 -lm -L/opt/local/lib -lgthread-2.0 -lglib-2.0 -lintl -framework ApplicationServices -framework CoreServices -framework CoreFoundation -framework Foundation 
:info:build LLVM ERROR: Cannot select: intrinsic %llvm.x86.sse42.crc32.64.64
:info:build clang: error: linker command failed with exit code 1 (use -v to see invocation)
:info:build Makefile:1186: recipe for target '../../lib/QtCore.framework/QtCore' failed
:info:build gmake[2]: *** [../../lib/QtCore.framework/QtCore] Error 1
:info:build gmake[2]: Leaving directory '/opt/local/var/macports/build/qt5-kde-x11/build/src/corelib'
:info:build Makefile:140: recipe for target 'sub-corelib-make_first' failed
:info:build gmake[1]: *** [sub-corelib-make_first] Error 2
:info:build gmake[1]: Leaving directory '/opt/local/var/macports/build/qt5-kde-x11/build/src'
:info:build Makefile:45: recipe for target 'sub-src-make_first' failed
:info:build gmake: *** [sub-src-make_first] Error 2
:info:build gmake: Leaving directory '/opt/local/var/macports/build/qt5-kde-x11/build'
:info:build Command failed:  cd "/opt/local/var/macports/build/qt5-kde-x11/build" && gmake -j4 -w 
:info:build Exit code: 2





More information about the Interest mailing list