Ошибка при сборке Qt error: '::open64' has not been declared



  • Собираю Qt под arm.
    Но при сборке появилась такая ошибка error: '::open64' has not been declared
    Помогите пожалуйста решить эту проблему.



  • В каком контексте появляется эта ошибка?
    Были ли какие-нибудь ошибки при configure?



  • Вот параметры ./configure .
    @
    -xplatform qws/linux-arm-g++
    -embedded arm
    -little-endian -depths 16
    -no-gfx-qvfb
    -no-gfx-multiscreen
    -qt-gfx-linuxfb
    -qt-zlib
    -qt-libjpeg
    -qt-libpng
    -qt-freetype
    -no-webkit
    -no-cups
    -opensource
    -nomake examples
    -nomake tests
    @
    Ошибок при выполнении команды не было, но были предупреждения типа такого, в основном все связаны с web WARNING: DESTDIR: Cannot access directory '/include/WebCore'

    Ошибка возникла при выполнении вот этой операции
    @
    make[1]: Вход в каталог /home/strateg/qt-4.8.4/src/corelib' ~/buildroot-2009.08/build_arm/staging_dir/usr/bin/arm-linux-g++ -c -pipe -fno-exceptions -O2 -Wall -W -D_REENTRANT -fPIC -DQT_SHARED -DQT_BUILD_CORE_LIB -DQT_NO_USING_NAMESPACE -DQT_NO_CAST_TO_ASCII -DQT_ASCII_CAST_WARNINGS -DQT3_SUPPORT -DQT_MOC_COMPAT -DQT_USE_QSTRINGBUILDER -DELF_INTERPRETER=\"/lib64/ld-linux-x86-64.so.2\" -DHB_EXPORT=Q_CORE_EXPORT -DQT_NO_DEBUG -D_LARGEFILE64_SOURCE -D_LARGEFILE_SOURCE -I../../mkspecs/qws/linux-arm-g++ -I. -I../../include -I../../include/QtCore -I.rcc/release-shared-emb-arm -Iglobal -I../3rdparty/zlib -I../3rdparty/harfbuzz/src -I../3rdparty/md5 -I../3rdparty/md4 -I.moc/release-shared-emb-arm -o .obj/release-shared-emb-arm/qthread_unix.o thread/qthread_unix.cpp In file included from ../../include/QtCore/private/qcore_unix_p.h:1, from ../../include/QtCore/private/../../../src/corelib/kernel/qeventdispatcher_unix_p.h:59, from ../../include/QtCore/private/qeventdispatcher_unix_p.h:1, from thread/qthread_unix.cpp:54: ../../include/QtCore/private/../../../src/corelib/kernel/qcore_unix_p.h: In function 'int qt_safe_open(const char*, int, mode_t)': ../../include/QtCore/private/../../../src/corelib/kernel/qcore_unix_p.h:154: error: '::open64' has not been declared make[1]: *** [.obj/release-shared-emb-arm/qthread_unix.o] Ошибка 1 make[1]: Выход из каталога/home/strateg/qt-4.8.4/src/corelib'
    make: *** [sub-corelib-make_default-ordered] Ошибка 2
    @



  • Я к сожалению не спец в билде для ARM, но мне кажется подозрительно что в билде для ARM используется /lib64/ld-linux-x86-64.so.2

    Проверьте есть у вас header файл в котором описано ::open64 для ARM.



  • А вы не скажите что именно это "::open64" обозначает, что бы иметь представление, а то в этом новичок.



  • open64 это стандартная функция open с возможностью доступа к большим файлам (больше чем 2 в 32 байт)
    Она должна входить в arm libc.



  • Подобное описано только в двух файлах
    /home/strateg/qt-4.8.4/mkspecs/common/posix/qplatformdefs.h
    #define QT_OPEN ::open64
    /home/strateg/qt-4.8.4/mkspecs/common/integrity/qplatformdefs.h
    #define QT_OPEN ::open64



  • Вот "тут":http://qt-project.org/doc/qt-4.8/qt-embedded-crosscompiling.html есть небольшая инструкция как собирать Qt под ARM



  • [quote author="STRATEG_lLTY" date="1399925103"]Подобное описано только в двух файлах
    /home/strateg/qt-4.8.4/mkspecs/common/posix/qplatformdefs.h
    #define QT_OPEN ::open64
    /home/strateg/qt-4.8.4/mkspecs/common/integrity/qplatformdefs.h
    #define QT_OPEN ::open64
    [/quote]

    open64 должна быть в header файлах arm libc.
    вот например "man open64":http://www.mkssoftware.com/docs/man3/open.3.asp



  • Спасибо за помощь, проблема была решена переустановкой arm-linux-g++ и созданием ссылки на его исполняемый файл с именем "arm-linux-g++"
    Но возникла новая проблема, он не может найти QTguid



  • Какую ошибку пишет компилятор или линковщик ?



  • @
    make[1]: Вход в каталог /home/strateg/qt-4.8.4/src/gui' arm-linux-gcc -c -include .pch/release-shared-emb-arm/QtGui -pipe -fno-exceptions -O2 -fvisibility=hidden -Wall -W -D_REENTRANT -fPIC -DQT_SHARED -DQT_BUILD_GUI_LIB -DQT_NO_USING_NAMESPACE -DQT_NO_CAST_TO_ASCII -DQT_ASCII_CAST_WARNINGS -DQT3_SUPPORT -DQT_MOC_COMPAT -DQT_USE_QSTRINGBUILDER -DQT_USE_BUNDLED_LIBPNG -DPNG_NO_ASSEMBLER_CODE -DQT_NO_FONTCONFIG -DFT2_BUILD_LIBRARY -DFT_CONFIG_OPTION_SYSTEM_ZLIB -DQT_NO_OPENTYPE -DQT_NO_STYLE_MAC -DQT_NO_STYLE_WINDOWSVISTA -DQT_NO_STYLE_WINDOWSXP -DQT_NO_STYLE_GTK -DQT_NO_STYLE_WINDOWSCE -DQT_NO_STYLE_WINDOWSMOBILE -DQT_NO_STYLE_S60 -DQ_INTERNAL_QAPP_SRC -DQT_HAVE_NEON -DQT_NO_DEBUG -DQT_NETWORK_LIB -DQT_CORE_LIB -D_LARGEFILE64_SOURCE -D_LARGEFILE_SOURCE -I../../mkspecs/qws/linux-arm-g++ -I. -I../../include/QtCore -I../../include/QtNetwork -I../../include -I../../include/QtGui -I.rcc/release-shared-emb-arm -Iimage -I../3rdparty/libpng -I../3rdparty/zlib -I../3rdparty/zlib -I../3rdparty/freetype/builds/unix -I../3rdparty/freetype/src -I../3rdparty/freetype/include -I../3rdparty/harfbuzz/src -Idialogs -I.moc/release-shared-emb-arm -I.uic/release-shared-emb-arm -o .obj/release-shared-emb-arm/pixman-arm-neon-asm.o ../3rdparty/pixman/pixman-arm-neon-asm.S cc1: fatal error: .pch/release-shared-emb-arm/QtGui: Нет такого файла или каталога compilation terminated. make[1]: *** [.obj/release-shared-emb-arm/pixman-arm-neon-asm.o] Ошибка 1 make[1]: Выход из каталога/home/strateg/qt-4.8.4/src/gui'
    make: *** [sub-gui-make_default-ordered] Ошибка 2
    @



  • Файлы в .pch/ это precompiled headers.
    Попробуйте запретить опцию precompiled headers.



  • А не подскажите как, а то натыкаюсь только на описания самой опции, а вот как её запретить при сборке найти не могу.



  • попробуйте в .pro файле
    @
    CONFIG -= precompile_header
    @



  • Спасибо большое, помогло!


Log in to reply
 

Looks like your connection to Qt Forum was lost, please wait while we try to reconnect.