2010-03-14 1 views
3

Я построил WxWidgets на Linux с помощью этой команды:Несовпадения между версиями программы и библиотеками сборок обнаружено

../configure --enable-общего повреждают Неотладочной

Это увидеть результаты этой сборки:

/usr/local/lib/wx/config/gtk2-ansi-release-2.8

/usr/local/lib/wx/include/gtk2-ansi-release-2.8/wx/setup.h

wx-con инжир выход:

 
[email protected]:~$ 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 
[email protected]:~$ 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__ 
[email protected]:~$ 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 с версии Release:

 
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 

Что не так?

ответ

2

Возможно, вам потребуется проверить, не объявляет ли ни один из ваших заголовков макрос DEBUG тем или иным способом. Однажды я столкнулся с этой проблемой.

Кроме того, может быть лучше выполнить статическое соединение.

+0

Нет, DEBUG не определен. Это простой пример Hello из учебника Widgets, один небольшой файл cpp. Все остальное - из заголовков Widgets. –

+1

Спасибо, используя статическую версию wxWidgets. Теперь все в порядке. –

+0

Я настоятельно рекомендую создать wxWidgets как монолитную библиотеку, если вы включите все отдельные библиотеки. В конечном итоге это устранит много головных болей. –