Я собрал wxWidgets в Linux с помощью этой команды:
.. / configure --enable-shared --disable-debug
Он видит результаты этой сборки:
/ USR / местные / Библиотека / WX / конфигурации / GTK2-ANSI-релиз-2,8
/ USR / местные / Библиотека / WX / включать / GTK2-ANSI-релиз-2,8 / WX / setup.h
Вывод wx-config:
alex@alex-linux:~$ wx-config --list
Default config is gtk2-ansi-release-2.8
Default config will be used for output
Alternate matches:
gtk2-ansi-debug-2.8
gtk2-ansi-debug-static-2.8
gtk2-ansi-release-static-2.8
alex@alex-linux:~$ wx-config --cppflags --release
2.8
-I/usr/local/lib/wx/include/gtk2-ansi-release-2.8 -I/usr/local/include/wx-2.8 -D_FILE_OFFSET_BITS=64 -D_LARGE_FILES -D__WXGTK__
alex@alex-linux:~$ wx-config --libs --release
2.8
-L/usr/local/lib -pthread -lwx_gtk2_richtext-2.8 -lwx_gtk2_aui-2.8 -lwx_gtk2_xrc-2.8 -lwx_gtk2_qa-2.8 -lwx_gtk2_html-2.8 -lwx_gtk2_adv-2.8 -lwx_gtk2_core-2.8 -lwx_base_xml-2.8 -lwx_base_net-2.8 -lwx_base-2.8
Сейчас я пытаюсь собрать программу Hello wxWidgets с версией выпуска:
g++ -I/usr/local/lib/wx/include/gtk2-ansi-release-2.8 -I/usr/local/include/wx-2.8 -D_FILE_OFFSET_BITS=64 -D_LARGE_FILES -D__WXGTK__ hello.cpp -o hello -L/usr/local/lib -pthread -lwx_gtk2_richtext-2.8 -lwx_gtk2_aui-2.8 -lwx_gtk2_xrc-2.8 -lwx_gtk2_qa-2.8 -lwx_gtk2_html-2.8 -lwx_gtk2_adv-2.8 -lwx_gtk2_core-2.8 -lwx_base_xml-2.8 -lwx_base_net-2.8 -lwx_base-2.8
Он успешно компилируется и запускается на моем компьютере. Зависимости программы:
ldd hello
linux-gate.so.1 => (0x006ef000)
libwx_gtk2_richtext-2.8.so.0 => /usr/local/lib/libwx_gtk2_richtext-2.8.so.0 (0x00253000)
libwx_gtk2_aui-2.8.so.0 => /usr/local/lib/libwx_gtk2_aui-2.8.so.0 (0x005ff000)
libwx_gtk2_xrc-2.8.so.0 => /usr/local/lib/libwx_gtk2_xrc-2.8.so.0 (0x00110000)
libwx_gtk2_qa-2.8.so.0 => /usr/local/lib/libwx_gtk2_qa-2.8.so.0 (0x00a3c000)
libwx_gtk2_html-2.8.so.0 => /usr/local/lib/libwx_gtk2_html-2.8.so.0 (0x0019d000)
libwx_gtk2_adv-2.8.so.0 => /usr/local/lib/libwx_gtk2_adv-2.8.so.0 (0x00c18000)
libwx_gtk2_core-2.8.so.0 => /usr/local/lib/libwx_gtk2_core-2.8.so.0 (0x00ef8000)
libwx_base_xml-2.8.so.0 => /usr/local/lib/libwx_base_xml-2.8.so.0 (0x0047e000)
libwx_base_net-2.8.so.0 => /usr/local/lib/libwx_base_net-2.8.so.0 (0x00353000)
libwx_base-2.8.so.0 => /usr/local/lib/libwx_base-2.8.so.0 (0x006f0000)
...
Теперь я хочу запустить эту программу на другом компьютере без установленного wxWidgets. Я копирую программу и все общие библиотеки на другой компьютер:
hello libwx_gtk2_core-2.8.so
libwx_base-2.8.so libwx_gtk2_core-2.8.so.0
libwx_base-2.8.so.0 libwx_gtk2_core-2.8.so.0.6.0
libwx_base-2.8.so.0.6.0 libwx_gtk2_html-2.8.so
libwx_base_net-2.8.so libwx_gtk2_html-2.8.so.0
libwx_base_net-2.8.so.0 libwx_gtk2_html-2.8.so.0.6.0
libwx_base_net-2.8.so.0.6.0 libwx_gtk2_qa-2.8.so
libwx_base_xml-2.8.so libwx_gtk2_qa-2.8.so.0
libwx_base_xml-2.8.so.0 libwx_gtk2_qa-2.8.so.0.6.0
libwx_base_xml-2.8.so.0.6.0 libwx_gtk2_richtext-2.8.so
libwx_gtk2_adv-2.8.so libwx_gtk2_richtext-2.8.so.0
libwx_gtk2_adv-2.8.so.0 libwx_gtk2_richtext-2.8.so.0.6.0
libwx_gtk2_adv-2.8.so.0.6.0 libwx_gtk2_xrc-2.8.so
libwx_gtk2_aui-2.8.so libwx_gtk2_xrc-2.8.so.0
libwx_gtk2_aui-2.8.so.0 libwx_gtk2_xrc-2.8.so.0.6.0
libwx_gtk2_aui-2.8.so.0.6.0
И запусти это:
LD_LIBRARY_PATH =. ./hello
Результат:
Fatal Error: Mismatch between the program and library build versions detected.
The library used 2.8 (debug,ANSI,compiler with C++ ABI 1002,wx containers,compatible with 2.6),
and your program used 2.8 (no debug,ANSI,compiler with C++ ABI 1002,wx containers,compatible with 2.6).
./run.sh: line 1: 1810 Aborted LD_LIBRARY_PATH=. ./hello
Что не так?