Не удалось собрать Qt 5.0 на Solaris 10

В настоящее время я работаю над кроссплатформенным проектом в Qt. В настоящее время я разрабатываю Linux (Mint x64), но мне нужно развернуть части проекта на сервере Solaris 10.

Я пытаюсь собрать Qt5.0.1 на Solaris уже около 3 дней, но без особого успеха!

Я скачал исходники с сайта здесь и успешно распаковал архив.

При попытке запустить скрипт configure я сначала столкнулся с синтаксическими ошибками, которые были исправлены путем изменения скрипта qtbase/configure для использования /bin/bash вместо /bin/sh.

Затем я столкнулся с несколькими проблемами при запуске configure:

./configure -platform solaris-g++
  • Configure не может обнаружить архитектуру (не критическая ошибка, но...)
  • "Плагин платформы QPA не включен!" - Я явно установил (используя pkgutil) libxcb и xcbutil
  • When using the -no-qpa-platform-guard flag, configure completes, then:
    • I get an assortment of errors in building when I run gmake -j4

Ошибки компиляции следующие:

In file included from ../3rdparty/pcre/pcre16_compile.c:43:0:
../3rdparty/pcre/pcre_compile.c: In function 'compile_branch':
../3rdparty/pcre/pcre_compile.c:5193:18: error: 'int64_t' undeclared (first use in this function)
../3rdparty/pcre/pcre_compile.c:5193:18: note: each undeclared identifier is reported only once for each function it appears in
../3rdparty/pcre/pcre_compile.c:5194:36: error: expected ')' before 'length_prevgroup'
../3rdparty/pcre/pcre_compile.c:5264:32: error: expected ')' before 'repeat_max'gcc -c -O2 -Wall -W -D_REENTRANT -fPIC -DQT_NO_LIBUDEV -DQT_NO_EVDEV -DQT_NO_XCB -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 -DPCRE_HAVE_CONFIG_H -DHB_EXPORT=Q_CORE_EXPORT -DQT_CORE_LIB -D_LARGEFILE64_SOURCE -D_LARGEFILE_SOURCE -DQT_NO_DEBUG -I../../mkspecs/solaris-g++ -I. -I../../include -I../../include/QtCore -I../../include/QtCore/5.0.1 -I../../include/QtCore/5.0.1/QtCore -Iglobal -I../3rdparty/pcre -I../3rdparty/md5 -I../3rdparty/md4 -I.moc/release-shared -I/usr/sfw/include -o .obj/release-shared/pcre16_dfa_exec.o ../3rdparty/pcre/pcre16_dfa_exec.c
gmake[3]: *** [.obj/release-shared/pcre16_compile.o] Error 1
gmake[3]: *** Waiting for unfinished jobs....
gmake[3]: Leaving directory `/export/home/emackenzie/Downloads/qt-everywhere-opensource-src-5.0.1/qtbase/src/corelib'
gmake[2]: *** [sub-corelib-make_first] Error 2
gmake[2]: Leaving directory `/export/home/emackenzie/Downloads/qt-everywhere-opensource-src-5.0.1/qtbase/src'
gmake[1]: *** [sub-src-make_first] Error 2
gmake[1]: Leaving directory `/export/home/emackenzie/Downloads/qt-everywhere-opensource-src-5.0.1/qtbase'
gmake: *** [module-qtbase-make_first] Error 2

Любая помощь будет принята с благодарностью!

[ОБНОВЛЕНИЕ] Итак, я решил эту ошибку компиляции, закомментировав pcre_internal.h:217,218,219,221:

//#if HAVE_STDINT_H
//#include <stdint.h>
//#elif HAVE_INTTYPES_H
#include <inttypes.h>
//#endif

Теперь я получаю эту ошибку:

io/qtemporarydir.cpp: In member function 'void QTemporaryDirPrivate::create(const QString&)':
io/qtemporarydir.cpp:150:30: error: 'mkdtemp' was not declared in this scope
gmake[3]: *** [.obj/release-shared/qtemporarydir.o] Error 1

Я проверил исходный код и включил stdlib.h (где должен быть объявлен mkdtemp), и он находится в файловой системе в /usr/include.

Снова любая помощь будет здорово.


person Ed Mackenzie    schedule 09.04.2013    source источник
comment
ср. мой связанный вопрос и ответ: stackoverflow.com/q/20879715/427158   -  person maxschlepzig    schedule 02.01.2014


Ответы (1)


Выясните, какой заголовок в вашей системе объявляет int64_t и #include в pcre_compile.c.

person karlphillip    schedule 09.04.2013
comment
Я надеялся, что будет более приятное решение, поскольку код, который я компилирую, не принадлежит мне, это все стандартные исходники Qt. Также я считаю, что int64_t не определен в одном месте... (есть несколько разных заголовков, которые его объявляют) - person Ed Mackenzie; 09.04.2013
comment
Вы можете определить это самостоятельно: отметьте это. - person karlphillip; 09.04.2013