Important: Please read the Qt Code of Conduct -

Errors during running make

  • Hy everybody

    I would like to create a graphic interface on a embedded linux with an ARM architecture using Qt and cross-compiling.
    So I downloaded the source code of Qt5 (the tar.gz for Linux).
    I have extracted the files.

    I have run the ./configure
    @./configure -opensource -arch arm -xplatform linux-arm_v5t_le-g++ -release -nomake docs -no-audio-backend -no-cups -no-javascript-jit -confirm-license -qpa -no-gui -no-widgets -no-largefile -no-accessibility -no-qml-debug -no-gif -no-openssl -v -silent -no-sse -no-sse2 -no-sse3 -no-ssse3 -no-sse4.1 -no-sse4.2 -no-avx -no-avx2 -no-neon -no-libpng -no-nis -no-iconv -no-opengl -no-glib -qt-libjpeg -I/vobs/hhti/TOOLS/montavista/arm/v5t_le/target/usr/include -L/vobs/hhti/TOOLS/montavista/arm/v5t_le/target/usr/lib -no-gtkstyle -no-openvg -no-sm -no-xshape -no-xvideo -no-xsync -no-xinerama -no-xcursor -no-xfixes -no-xrandr -no-xrender -no-mitshm -no-fontconfig -no-xkb -no-xinput -no-xcb -no-qpa-platform-guard@

    And then I run "make". But I have got some issues. The part with the errors is quite long. They are mostly comming from qatomic files. I just post a piece of it :

    @../../include/QtCore/../../src/corelib/arch/qatomic_gcc.h:93: error: there are no arguments to __sync_synchronize' that depend on a template parameter, so a declaration of__sync_synchronize' must be available
    ../../include/QtCore/../../src/corelib/arch/qatomic_gcc.h:93: error: (if you use -fpermissive', G++ will accept your code, but allowing the use of an undeclared name is deprecated) ../../include/QtCore/../../src/corelib/arch/qatomic_gcc.h: In static member functionstatic void QAtomicOps<T>::storeRelease(T&, T)':
    ../../include/QtCore/../../src/corelib/arch/qatomic_gcc.h:99: error: there are no arguments to __sync_synchronize' that depend on a template parameter, so a declaration of__sync_synchronize' must be available
    ../../include/QtCore/../../src/corelib/arch/qatomic_gcc.h: In static member function static T QAtomicOps<T>::fetchAndStoreRelease(T&, T)': ../../include/QtCore/../../src/corelib/arch/qatomic_gcc.h:118: error: there are no arguments to__sync_synchronize' that depend on a template parameter, so a declaration of `__sync_synchronize' must be available

    May someone helps me with these issues ?

    Thanks you very much

  • Lifetime Qt Champion


    What version of arm-linux-gcc are you using ?

  • Hy SGaist

    Still the same... The arm-v5t-g++ is 3.4.3 and the gcc version on linux is 4.1.2...

    I can not update. So do the errors come from that outdated version ?
    If it is so, i'll use an older version of Qt.

  • Lifetime Qt Champion

    What does lock you with that old version of arm-linux-gcc ?

    As I already told you in your other thread, 4.1.1 is the minimal arm-linux-gcc for the 4.7-4.8 series (I don't remember for older versions).

  • Because of professional reason...

    And is it possible to disable qatomic ?

  • Also I have tried with the option -fpermissive with the configuration option, but it returns me :
    @-fpermissive: invalid command-line switch@

  • Lifetime Qt Champion

    I suspected that, but you might want to try to convince your bosses to do an update. 3.4.3 is really quite old. Are you updating an application on an old embedded device ?

    AFAIK, you can't disable QAtomic, it's one of the core classes.

  • No I can't... I don't have that "power"

    Anyway, thanks you very much for your help and your time.

  • So I have looked at the files in Qt to know which one is using qatomic_gcc.h and I have found the qbasicatomic.h file. It is written :
    @#include <QtCore/qatomic.h>

    #ifndef QBASICATOMIC_H
    #define QBASICATOMIC_H

    #if defined(QT_MOC) || defined(QT_BUILD_QMAKE) || defined(QT_RCC) || defined(QT_UIC) || defined(QT_BOOTSTRAPPED)

    include <QtCore/qatomic_bootstrap.h>

    // Compiler dependent implementation
    #elif defined(Q_CC_MSVC)

    include <QtCore/qatomic_msvc.h>

    // Operating system dependent implementation
    #elif defined(Q_OS_INTEGRITY)

    include "QtCore/qatomic_integrity.h"

    #elif defined(Q_OS_VXWORKS)

    include "QtCore/qatomic_vxworks.h"

    // Processor dependent implementation
    #elif defined(Q_PROCESSOR_ALPHA)

    include "QtCore/qatomic_alpha.h"

    #elif defined(Q_PROCESSOR_ARM_V7)

    include "QtCore/qatomic_armv7.h"

    #elif defined(Q_PROCESSOR_ARM_V6)

    include "QtCore/qatomic_armv6.h"

    #elif defined(Q_PROCESSOR_ARM_V5)

    include "QtCore/qatomic_armv5.h"

    #elif defined(Q_PROCESSOR_BFIN)

    include "QtCore/qatomic_bfin.h"

    #elif defined(Q_PROCESSOR_IA64)

    include "QtCore/qatomic_ia64.h"

    #elif defined(Q_PROCESSOR_MIPS)

    include "QtCore/qatomic_mips.h"

    #elif defined(Q_PROCESSOR_POWER)

    include "QtCore/qatomic_power.h"

    #elif defined(Q_PROCESSOR_S390)

    include "QtCore/qatomic_s390.h"

    #elif defined(Q_PROCESSOR_SH4A)

    include "QtCore/qatomic_sh4a.h"

    #elif defined(Q_PROCESSOR_SPARC)

    include "QtCore/qatomic_sparc.h"

    #elif defined(Q_PROCESSOR_X86)

    include <QtCore/qatomic_x86.h>

    // Fallback compiler dependent implementation
    #elif defined(Q_COMPILER_ATOMICS) && defined(Q_COMPILER_CONSTEXPR)

    include <QtCore/qatomic_cxx11.h>

    #elif defined(Q_CC_GNU)

    include <QtCore/qatomic_gcc.h>

    // Fallback operating system dependent implementation
    #elif defined(Q_OS_UNIX)

    include <QtCore/qatomic_unix.h>

    // No fallback

    error "Qt has not been ported to this platform"


    I presume that when running the make, it goes down until reaching include <QtCore/qatomic_gcc.h>

    I think it would be better if it includes <QtCore/qatomic_bootstrap.h>

    Is that possible ? What would be the tricks to make QT_MOC, QT_BUILD_QMAKE, QT_RCCQT_UIC or QT_BOOTSTRAPPED defined ?

Log in to reply