ошибка сборки проекта при статической сборки wx Topic is solved

Это русская секция форума wxWidjets. В этой секции вы можете обсуждать любые вопросы, связанные с wxWidgets на вашем родном языке.
Post Reply
AntonyTony
Earned a small fee
Earned a small fee
Posts: 18
Joined: Tue Jan 28, 2020 10:03 am

ошибка сборки проекта при статической сборки wx

Post by AntonyTony »

День добрый, потребовалось собрать статическую библиотеку wxWidgets и собрать шаблонный проект на CodeBlocks.
Собственно собрал со следующими параметрами,

Code: Select all

../configure --enable-unicode --enable-debug --disable-shared --enable-monolithic
При сборке стандартного проекта вылезает ошибка

Code: Select all

-------------- Build: Debug in test_1 (compiler: GNU GCC Compiler)---------------

g++ -Winvalid-pch -include wx_pch.h -DWX_PRECOMP -Wall -g -I/usr/local/lib/wx/include/gtk2-unicode-static-3.0 -I/usr/local/include/wx-3.0 -D_FILE_OFFSET_BITS=64 -D__WXGTK__ -pthread  -c /home/user/projects/test_1/wx_pch.h -o wx_pch.h.gch/Debug_wx_pch_h_gch
g++ -Winvalid-pch -include wx_pch.h -DWX_PRECOMP -Wall -g -I/usr/local/lib/wx/include/gtk2-unicode-static-3.0 -I/usr/local/include/wx-3.0 -D_FILE_OFFSET_BITS=64 -D__WXGTK__ -pthread  -c /home/user/projects/test_1/GUIDialog.cpp -o obj/Debug/GUIDialog.o
g++ -Winvalid-pch -include wx_pch.h -DWX_PRECOMP -Wall -g -I/usr/local/lib/wx/include/gtk2-unicode-static-3.0 -I/usr/local/include/wx-3.0 -D_FILE_OFFSET_BITS=64 -D__WXGTK__ -pthread  -c /home/user/projects/test_1/test_1App.cpp -o obj/Debug/test_1App.o
g++ -Winvalid-pch -include wx_pch.h -DWX_PRECOMP -Wall -g -I/usr/local/lib/wx/include/gtk2-unicode-static-3.0 -I/usr/local/include/wx-3.0 -D_FILE_OFFSET_BITS=64 -D__WXGTK__ -pthread  -c /home/user/projects/test_1/test_1Main.cpp -o obj/Debug/test_1Main.o
g++  -o bin/Debug/test_1 obj/Debug/GUIDialog.o obj/Debug/test_1App.o obj/Debug/test_1Main.o  -L/usr/local/lib -pthread   /usr/local/lib/libwx_gtk2u-3.0.a -lgtk-x11-2.0 -lgdk-x11-2.0 -lpangocairo-1.0 -latk-1.0 -lcairo -lgdk_pixbuf-2.0 -lgio-2.0 -lpangoft2-1.0 -lpango-1.0 -lgobject-2.0 -lfontconfig -lfreetype -lgthread-2.0 -pthread -lglib-2.0 -lX11 -lXxf86vm -lSM -lgtk-x11-2.0 -lgdk-x11-2.0 -lpangocairo-1.0 -latk-1.0 -lcairo -lgdk_pixbuf-2.0 -lgio-2.0 -lpangoft2-1.0 -lpango-1.0 -lgobject-2.0 -lglib-2.0 -lfontconfig -lfreetype -lpng -lz -lwxregexu-3.0 -lwxtiff-3.0 -lwxjpeg-3.0 -lz -ldl -lm   
/usr/bin/ld: obj/Debug/test_1App.o:(.data.rel.ro._ZTV9test_1App[_ZTV9test_1App]+0x238): undefined reference to `non-virtual thunk to wxAppConsoleBase::FilterEvent(wxEvent&)'
collect2: error: ld returned 1 exit status
Process terminated with status 1 (0 minute(s), 7 second(s))
2 error(s), 0 warning(s) (0 minute(s), 7 second(s))
Пробовал не монолитную сборку, всё та же проблема. С динамически собранной библиотекой таких проблем нет.
Версия gcc 8.3.0 , wxWidgets 3.0.2
Если собирать более позднюю версию библиотеки, то как в CodeBlocks, при создании проекта указать версию wx? (при создании предлагает 2.8.x | 2.9.x | 3.0.x)
В чём может быть проблема?
ONEEYEMAN
Part Of The Furniture
Part Of The Furniture
Posts: 7458
Joined: Sat Apr 16, 2005 7:22 am
Location: USA, Ukraine

Re: ошибка сборки проекта при статической сборки wx

Post by ONEEYEMAN »

Dobrogo vremeni sutok,
Uberite na hren "MONOLITHIC" opciju. Iz za kakogo-to pridurka na YouTube vse ee hotjat. 99.99999% proektov eju ne polzujutsja, i nikakogo preimuschestva ona ne daet - tolko bolshe golovnoj boli. ;-)

Poprobujte sobrat "minimal" sample iz postavki wxWidgets - navernjaka vse zarabotaet.

Prosto v C::B ne ukazany pravilnye parametry.

Sozdajte proekt s nulja i poprobujte ego sobrat.

Spasibo.

P.S.: "--enable-unicode" vkljuchecno po umolchaniju - etu opciju mogno ne ukazyvat.
P.P.S: Kakaja OS?
AntonyTony
Earned a small fee
Earned a small fee
Posts: 18
Joined: Tue Jan 28, 2020 10:03 am

Re: ошибка сборки проекта при статической сборки wx

Post by AntonyTony »

ONEEYEMAN wrote: Tue Jan 26, 2021 11:16 pm P.P.S: Kakaja OS?
Debian 10
Пересобрал по минималке и шаблонный проект C::D собрался и запустился, но теперь при сборке моего проекта выдаёт ошибку:

Code: Select all

make[3]: *** Нет правила для сборки цели «/usr/local/lib/libwx_gtk2u-3.0.a», требуемой для «...».  Останов.
«libwx_gtk2u-3.0.a» просто отсутствует по заданному пути, причём при всех вариантах сборки, которые я пробовал, это библиотека не собиралась в «/usr/local/lib/»
ONEEYEMAN
Part Of The Furniture
Part Of The Furniture
Posts: 7458
Joined: Sat Apr 16, 2005 7:22 am
Location: USA, Ukraine

Re: ошибка сборки проекта при статической сборки wx

Post by ONEEYEMAN »

Доброго времени суток,
Как конфигурировалась библиотека? С какими опциями?
Как создавался проэкт в С::В?

Попробуйте создать С::В проэкт с нуля отчеркивая все нужные опции..

Спасибо
AntonyTony
Earned a small fee
Earned a small fee
Posts: 18
Joined: Tue Jan 28, 2020 10:03 am

Re: ошибка сборки проекта при статической сборки wx

Post by AntonyTony »

Доброго времени суток
ONEEYEMAN wrote: Wed Jan 27, 2021 8:10 am Как конфигурировалась библиотека? С какими опциями?
../configure --enable-unicode --disable-shared
ONEEYEMAN wrote: Wed Jan 27, 2021 8:10 am Как создавался проэкт в С::В?

Попробуйте создать С::В проэкт с нуля отчеркивая все нужные опции..
C::B -> Create new project (wxWidgets project) -> Select wxWidgets version (wxWidgets 3.0.x) -> Set project name and Author -> Preferred GUI Builder (wxSmith) and Application Type (Dialog Based) -> Compiler (CNU GCC) -> wxWidget Lib Settings (Use default wxWidgets config) and Other Options (Create PCH)
В таком виде проект собирается и запускается, если в "wxWidget Lib Settings" выбрать "Use Advanced Options" и в опциях задать (Use Unicode build of wxWidgets), то проект не собирается( не может подключить wx/wxprec.h).

Мой проект я собираю на Windows через CMake на удалённой машине, через VB. Ошибки при удалённой сборке идентичны при сборке на удалённой машине в C::B.

Спасибо
ONEEYEMAN
Part Of The Furniture
Part Of The Furniture
Posts: 7458
Joined: Sat Apr 16, 2005 7:22 am
Location: USA, Ukraine

Re: ошибка сборки проекта при статической сборки wx

Post by ONEEYEMAN »

Доброго времени суток

Code: Select all

--disable-shared
Собирать для Линукса статически не рекомендуется по многим причинам. Надеюсь что знаете и готовы к риску. :D

В C::B при создании проэкта нужно указать статическую библиотеку wxWidgets. Я к сжалению им не пользуюсь поэтому не могу сказать где нужно поставить птичку. Просто проверьте все скрины при создании проэкта.

Да проверьте - билитека с таким именем где-то существует - не обязательно в /usr/local/lib.

Thank you.
AntonyTony
Earned a small fee
Earned a small fee
Posts: 18
Joined: Tue Jan 28, 2020 10:03 am

Re: ошибка сборки проекта при статической сборки wx

Post by AntonyTony »

Очередная пересборка проекта решила мою проблему.
ONEEYEMAN wrote: Wed Jan 27, 2021 9:12 am Собирать для Линукса статически не рекомендуется по многим причинам. Надеюсь что знаете и готовы к риску. :D
Я ещё достаточно "зелён" и поэтому не знаю. В чём подвох?

Спасибо
ONEEYEMAN
Part Of The Furniture
Part Of The Furniture
Posts: 7458
Joined: Sat Apr 16, 2005 7:22 am
Location: USA, Ukraine

Re: ошибка сборки проекта при статической сборки wx

Post by ONEEYEMAN »

Доброго времени суток,
Проблем несколько;

1. Лицензия.
GTK and dependencies имеют свободную лицензию позволяющую статическую линковку. Но нет никакой гарантии что это не изменится или что библиотеки от которых зависят библиотеки от которых зависит GTK имеют такую же лицензию.

2. Конфликт и краш.
Даже при статической линковке программа на линуксе может коашнуться если существует динамическа библиотека на компе где запускается ваша программа. Линцксовский линкер в первую очередь ищет динамические библиотеки и если есть несоответствие по API - crash.

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

4. Версия компилятора.
Если ваша версия gcc не совместима по API - гарантированный краш. На сегодняшний день это очень редкий случай но тем не менее существует вриант обновления компилятора.

Спасибо.
ONEEYEMAN
Part Of The Furniture
Part Of The Furniture
Posts: 7458
Joined: Sat Apr 16, 2005 7:22 am
Location: USA, Ukraine

Re: ошибка сборки проекта при статической сборки wx

Post by ONEEYEMAN »

Dobrogo vremeni sutok,

Dlja bolee polnogo otveta (i bolee razvernutogo) - perejdite po ssylke sjuda. (Otvet ot DavidHart)

Google translate v pomosch esli po anglijski ne chitaete. :D

Spasibo.
AntonyTony
Earned a small fee
Earned a small fee
Posts: 18
Joined: Tue Jan 28, 2020 10:03 am

Re: ошибка сборки проекта при статической сборки wx

Post by AntonyTony »

ONEEYEMAN, спасибо вам за предоставленную инфу)
Post Reply