gpt4 book ai didi

linux - 检测到程序和库构建版本不匹配

转载 作者:太空狗 更新时间:2023-10-29 11:16:44 24 4
gpt4 key购买 nike

我使用这个命令在 Linux 上构建了 wxWidgets:

../configure --enable-shared --disable-debug

它看到这个构建的结果:

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

/usr/local/lib/wx/include/gtk2-ansi-release-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.8alex@alex-linux:~$ wx-config --cppflags --release2.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 --release2.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 

现在我正在尝试使用 Release 版本构建 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.solibwx_base-2.8.so            libwx_gtk2_core-2.8.so.0libwx_base-2.8.so.0          libwx_gtk2_core-2.8.so.0.6.0libwx_base-2.8.so.0.6.0      libwx_gtk2_html-2.8.solibwx_base_net-2.8.so        libwx_gtk2_html-2.8.so.0libwx_base_net-2.8.so.0      libwx_gtk2_html-2.8.so.0.6.0libwx_base_net-2.8.so.0.6.0  libwx_gtk2_qa-2.8.solibwx_base_xml-2.8.so        libwx_gtk2_qa-2.8.so.0libwx_base_xml-2.8.so.0      libwx_gtk2_qa-2.8.so.0.6.0libwx_base_xml-2.8.so.0.6.0  libwx_gtk2_richtext-2.8.solibwx_gtk2_adv-2.8.so        libwx_gtk2_richtext-2.8.so.0libwx_gtk2_adv-2.8.so.0      libwx_gtk2_richtext-2.8.so.0.6.0libwx_gtk2_adv-2.8.so.0.6.0  libwx_gtk2_xrc-2.8.solibwx_gtk2_aui-2.8.so        libwx_gtk2_xrc-2.8.so.0libwx_gtk2_aui-2.8.so.0      libwx_gtk2_xrc-2.8.so.0.6.0libwx_gtk2_aui-2.8.so.0.6.0

然后运行它:LD_LIBRARY_PATH=。 ./你好

结果:

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

怎么了?

最佳答案

您可能需要检查您的 header 是否以这种或那种方式声明 DEBUG 宏。我遇到过一次这个问题。

除此之外,执行静态链接可能会更好。

关于linux - 检测到程序和库构建版本不匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2441960/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com