Форум программистов, компьютерный форум, киберфорум
C++ Qt
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.86/22: Рейтинг темы: голосов - 22, средняя оценка - 4.86
0 / 0 / 0
Регистрация: 05.05.2019
Сообщений: 8
1

Qt для статической сборки программного обеспечения

06.08.2019, 13:37. Показов 4549. Ответов 6

Author24 — интернет-сервис помощи студентам
Всем здравствуйте, форумчане!
Так уж вышло, что я не силен в собирании чего-либо. И очень прошу помочь.
При статической сборке QT вылетают следующие ошибки:

Код
ssl/qsslcertificate.cpp: In member function ‘QByteArray QSslCertificate::version() const’:
ssl/qsslcertificate.cpp:260:68: error: invalid use of incomplete type ‘X509’ {aka ‘struct x509_st’}
             QByteArray::number(qlonglong(q_ASN1_INTEGER_get(d->x509->cert_info->version)) + 1);
                                                                    ^~
In file included from ../../include/QtNetwork/qsslcertificate.h:1,
                 from ../../include/QtNetwork/../../src/network/ssl/qsslerror.h:47,
                 from ../../include/QtNetwork/qsslerror.h:1,
                 from ssl/qsslsocket.h:50,
                 from ssl/qsslsocket_p.h:46,
                 from ssl/qsslsocket_openssl_p.h:57,
                 from ssl/qsslsocket_openssl_symbols_p.h:57,
                 from ssl/qsslcertificate.cpp:110:
../../include/QtNetwork/../../src/network/ssl/qsslcertificate.h:53:16: note: forward declaration of ‘X509’ {aka ‘struct x509_st’}
 typedef struct x509_st X509; // ### check if this works
                ^~~~~~~
ssl/qsslcertificate.cpp: In member function ‘QByteArray QSslCertificate::serialNumber() const’:
ssl/qsslcertificate.cpp:275:45: error: invalid use of incomplete type ‘X509’ {aka ‘struct x509_st’}
         ASN1_INTEGER *serialNumber = d->x509->cert_info->serialNumber;
                                             ^~
In file included from ../../include/QtNetwork/qsslcertificate.h:1,
                 from ../../include/QtNetwork/../../src/network/ssl/qsslerror.h:47,
                 from ../../include/QtNetwork/qsslerror.h:1,
                 from ssl/qsslsocket.h:50,
                 from ssl/qsslsocket_p.h:46,
                 from ssl/qsslsocket_openssl_p.h:57,
                 from ssl/qsslsocket_openssl_symbols_p.h:57,
                 from ssl/qsslcertificate.cpp:110:
../../include/QtNetwork/../../src/network/ssl/qsslcertificate.h:53:16: note: forward declaration of ‘X509’ {aka ‘struct x509_st’}
 typedef struct x509_st X509; // ### check if this works
                ^~~~~~~
ssl/qsslcertificate.cpp: In member function ‘QSslKey QSslCertificate::publicKey() const’:
ssl/qsslcertificate.cpp:488:32: error: invalid use of incomplete type ‘X509’ {aka ‘struct x509_st’}
     X509_PUBKEY *xkey = d->x509->cert_info->key;
                                ^~
In file included from ../../include/QtNetwork/qsslcertificate.h:1,
                 from ../../include/QtNetwork/../../src/network/ssl/qsslerror.h:47,
                 from ../../include/QtNetwork/qsslerror.h:1,
                 from ssl/qsslsocket.h:50,
                 from ssl/qsslsocket_p.h:46,
                 from ssl/qsslsocket_openssl_p.h:57,
                 from ssl/qsslsocket_openssl_symbols_p.h:57,
                 from ssl/qsslcertificate.cpp:110:
../../include/QtNetwork/../../src/network/ssl/qsslcertificate.h:53:16: note: forward declaration of ‘X509’ {aka ‘struct x509_st’}
 typedef struct x509_st X509; // ### check if this works
                ^~~~~~~
ssl/qsslcertificate.cpp:492:29: error: invalid use of incomplete type ‘EVP_PKEY’ {aka ‘struct evp_pkey_st’}
     if (q_EVP_PKEY_type(pkey->type) == EVP_PKEY_RSA) {
                             ^~
In file included from /usr/include/openssl/crypto.h:25,
                 from /usr/include/openssl/bio.h:20,
                 from /usr/include/openssl/asn1.h:16,
                 from ssl/qsslsocket_openssl_p.h:66,
                 from ssl/qsslsocket_openssl_symbols_p.h:57,
                 from ssl/qsslcertificate.cpp:110:
/usr/include/openssl/ossl_typ.h:93:16: note: forward declaration of ‘EVP_PKEY’ {aka ‘struct evp_pkey_st’}
 typedef struct evp_pkey_st EVP_PKEY;
                ^~~~~~~~~~~
ssl/qsslcertificate.cpp:496:36: error: invalid use of incomplete type ‘EVP_PKEY’ {aka ‘struct evp_pkey_st’}
     } else if (q_EVP_PKEY_type(pkey->type) == EVP_PKEY_DSA) {
                                    ^~
In file included from /usr/include/openssl/crypto.h:25,
                 from /usr/include/openssl/bio.h:20,
                 from /usr/include/openssl/asn1.h:16,
                 from ssl/qsslsocket_openssl_p.h:66,
                 from ssl/qsslsocket_openssl_symbols_p.h:57,
                 from ssl/qsslcertificate.cpp:110:
/usr/include/openssl/ossl_typ.h:93:16: note: forward declaration of ‘EVP_PKEY’ {aka ‘struct evp_pkey_st’}
 typedef struct evp_pkey_st EVP_PKEY;
                ^~~~~~~~~~~
ssl/qsslcertificate.cpp:500:36: error: invalid use of incomplete type ‘EVP_PKEY’ {aka ‘struct evp_pkey_st’}
     } else if (q_EVP_PKEY_type(pkey->type) == EVP_PKEY_DH) {
                                    ^~
In file included from /usr/include/openssl/crypto.h:25,
                 from /usr/include/openssl/bio.h:20,
                 from /usr/include/openssl/asn1.h:16,
                 from ssl/qsslsocket_openssl_p.h:66,
                 from ssl/qsslsocket_openssl_symbols_p.h:57,
                 from ssl/qsslcertificate.cpp:110:
/usr/include/openssl/ossl_typ.h:93:16: note: forward declaration of ‘EVP_PKEY’ {aka ‘struct evp_pkey_st’}
 typedef struct evp_pkey_st EVP_PKEY;
Вопрос: что делать?
Битый час пытаюсь собрать, а гуглы не говорят ничего интересного по этому поводу.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
06.08.2019, 13:37
Ответы с готовыми решениями:

Проблемы статической сборки
Здравствуйте Форумчани! Пытаюсь статически собрать QT. Операционная система Windows 7 SP1 x32...

запуск программ без статической сборки
Здравствуйте! Пересобрал Qt статически - вроде все работает, но как дошло дело до баз данных -...

После статической сборки Qt не запускаются GUI приложения
Здравствуйте! Недавно начал осваивать Qt (версия 5.2.1, компилятор MinGW 4.8 32bit), сразу не...

Разработка программного обеспечения для математической
Привет! Я еще вить только учусь а мне задали ужаснейшую задачу с трьох этажными сложными...

6
96 / 82 / 22
Регистрация: 19.10.2013
Сообщений: 485
06.08.2019, 14:09 2
Если не нужна поддержка SSL, то лучше его вообще отключить.

Если же нужна, то надо в пути добавлять заголовки выбранной версии SSL,
как-то так:

build.cmd
Код
set QTSRC=C:\Qt\qt-everywhere-opensource-src-5.9.5
set MINGWPATH=D:\Qt\Qt5.9.5\5.9.5\mingw53_32\bin
set QTPREFIX=D:\Qt\Qt5.9.5\5.9.5\mingw53_32_static
set PYPATH=C:\dev\Python37-32
set PERLPATH=C:\dev\Strawberry\perl\bin
set JOMPATH=C:\dev\jom
set SSLINSTALLDIR=C:\dev\OpenSSL-Win32
set MYSQLPATH=C:\dev\mysql-5.5.62-win32

set QTDIR=%QTSRC%\qtbase
set PATH=%PATH%;%MINGWPATH%;%PYPATH%;%PERLPATH%;%RUBYPATH%;%QTDIR%/bin;C:\dev\mysql-5.5.62-win32\lib;C:\dev\mysql-5.5.62-win32\bin
set LIBS=%LIBS%;C:\dev\mysql-5.5.62-win32\lib;C:\dev\OpenSSL-Win32\lib
set INCLUDE=%INCLUDE%;C:\dev\mysql-5.5.62-win32\include;C:\dev\OpenSSL-Win32\include;C:\dev\OpenSSL-Win32\include\openssl;C:\dev\mysql-5.5.62-win32\include\mysql
cd /d %QTSRC%

configure -prefix %QTPREFIX% -opensource -debug-and-release -confirm-license -static -static-runtime -platform win32-g++ -opengl desktop -mp -c++std c++11 ^
-qt-libpng -qt-pcre -qt-libjpeg -qt-freetype -qt-zlib -qt-pcre -qt-zlib -qt-sqlite -optimize-size ^
-skip qtdoc -skip qtwayland -skip qtwebview -skip qtwebengine -skip qtwebchannel -skip qtscript -skip qt3d -skip qttools ^
-no-pch -no-icu -no-shared -no-angle -no-qml-debug -no-icu -no-compile-examples -nomake examples -nomake tests -nomake tools  ^
-ssl -openssl -openssl-runtime OPENSSL_PREFIX=%SSLINSTALLDIR% -sql-mysql -sql-sqlite ^
-IC:\dev\mysql-5.5.62-win32\include\mysql -LC:\dev\mysql-5.5.62-win32\lib ^
-IC:\dev\OpenSSL-Win32\include -LC:\dev\OpenSSL-Win32\lib ^
MYSQL_INCDIR=C:/dev/mysql-5.5.62-win32/include "MYSQL_LIBDIR=C:/dev/mysql-5.5.62-win32/lib" ^
OPENSSL_LIBS="-LC:/dev/OpenSSL-Win32/lib -llibeay32 -lssleay32"
Проверяй все пути, заменяй на свои.
0
0 / 0 / 0
Регистрация: 05.05.2019
Сообщений: 8
06.08.2019, 14:23  [ТС] 3
Отключить можно путем -nomake openssl?
Забыл упомянуть, что я на ubuntu.
0
96 / 82 / 22
Регистрация: 19.10.2013
Сообщений: 485
06.08.2019, 14:28 4
configure --help | grep ssl

Добавлено через 1 минуту
Но позвольте вопрос, зачем для линукса статическая линковка?
0
0 / 0 / 0
Регистрация: 05.05.2019
Сообщений: 8
06.08.2019, 15:58  [ТС] 5
Это техническое ПО, которое будет передаваться людям. Вот и вся соль.
0
Эксперт С++
8483 / 6150 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
06.08.2019, 19:10 6
Передавайте список пакетов которые нужно установить. А еще лучше исходники с инструкцией по сборке.
1
0 / 0 / 0
Регистрация: 05.05.2019
Сообщений: 8
08.08.2019, 14:08  [ТС] 7
Возникли новые проблемы. Прошу помочь.

Код
make[4]: *** [Makefile:58157: .obj/release-static/previewmanager.o] Error 1
make[4]: Leaving directory '/home/user/qt_source/tools/designer/src/lib'
make[3]: *** [Makefile:78: sub-lib-make_default-ordered] Error 2
make[3]: Leaving directory '/home/user/qt_source/tools/designer/src'
make[2]: *** [Makefile:39: sub-src-make_default] Error 2
make[2]: Leaving directory '/home/user/qt_source/tools/designer'
make[1]: *** [Makefile:227: sub-designer-make_default-ordered] Error 2
make[1]: Leaving directory '/home/user/qt_source/tools'
make: *** [Makefile:633: sub-tools-make_default-ordered] Error 2
Добавлено через 9 минут
Решил сам.
0
08.08.2019, 14:08
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
08.08.2019, 14:08
Помогаю со студенческими работами здесь

Виды программного обеспечения для безопасности
Товарищи!!! Помогите!!! Какие средства защиты существуют в организациях? Я знаю лишь...

Лицензия для своего программного обеспечения
Здравствуйте. Я пишу программу, исходники доступны в открытом доступе на GitHub. Предположим, что...

Предложите сервис для разработчиков программного обеспечения
Предложите аналог этого (см.), но чтоб при регистрации не спрашивали номер телефона.

Поиск программного обеспечения для терминалов оплаты
Здравствуйте мне нужно по для терминала,мне нужно чтобы терминал брал деньги и печал чек сколько...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
Как подключить JavaScript файл в другом JavaScript файле
InfoMaster 20.01.2025
В современной веб-разработке организация кодовой базы играет ключевую роль в создании масштабируемых и поддерживаемых приложений. Модульность и правильное структурирование кода стали неотъемлемыми. . .
Как откатить изменения в исходниках, не внесенные в Git
InfoMaster 20.01.2025
При работе с системой контроля версий Git разработчики часто сталкиваются с необходимостью отменить внесенные изменения в исходном коде. Особенно актуальной становится ситуация, когда изменения еще. . .
В чем разница между px, in, mm, pt, dip, dp, sp
InfoMaster 20.01.2025
В мире цифрового дизайна и разработки интерфейсов правильный выбор единиц измерения играет ключевую роль в создании качественного пользовательского опыта. История развития систем измерений для. . .
Как изменить адрес удалённого репозитория (origin) в Git
InfoMaster 20.01.2025
В терминологии Git термин origin является стандартным именем для основного удаленного репозитория, с которым взаимодействует локальная копия проекта. Когда разработчик клонирует репозиторий с. . .
Как переместить последние коммиты в новую ветку (branch) в Git
InfoMaster 20.01.2025
При работе над проектом часто возникают ситуации, когда необходимо изолировать определенные изменения от основной линии разработки. Это может быть связано с экспериментальными функциями, исправлением. . .
Как вернуть результат из асинхронной функции в JavaScript
InfoMaster 20.01.2025
Асинхронное программирование представляет собой фундаментальную концепцию в JavaScript, которая позволяет выполнять длительные операции без блокировки основного потока выполнения программы. В. . .
Какой локальный веб-сервер выбрать
InfoMaster 19.01.2025
В современной веб-разработке локальные веб-серверы играют ключевую роль, предоставляя разработчикам надежную среду для создания, тестирования и отладки веб-приложений без необходимости использования. . .
Почему планшеты и iPad уже не так популярны, как раньше
InfoMaster 19.01.2025
Эра революционных инноваций История планшетов началась задолго до того, как эти устройства стали привычными спутниками нашей повседневной жизни. В начале 1990-х годов появились первые прототипы,. . .
Как самому прошить BIOS ноутбука
InfoMaster 19.01.2025
BIOS (Basic Input/ Output System) представляет собой важнейший компонент любого компьютера или ноутбука, который обеспечивает базовое взаимодействие между аппаратным и программным обеспечением. . .
Какой Linux выбрать для домашнего компьютера
InfoMaster 19.01.2025
Современные реалии выбора операционной системы В современном мире выбор операционной системы для домашнего компьютера становится все более важным решением, которое может существенно повлиять на. . .
Как объединить два словаря одним выражением в Python
InfoMaster 19.01.2025
В мире программирования на Python работа со словарями является неотъемлемой частью разработки. Словари представляют собой мощный инструмент для хранения и обработки данных в формате "ключ-значение". . . .
Как без исключения проверить существование файла в Python
InfoMaster 19.01.2025
При разработке программного обеспечения на Python часто возникает необходимость проверить существование файла перед выполнением операций с ним. Это критически важная задача, которая помогает избежать. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru