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 functionstatic 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
-
Hi,
What version of arm-linux-gcc are you using ?
-
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).
-
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.
-
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
#elseerror "Qt has not been ported to this platform"
#endif@
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 ?