我在这里遇到一个问题:我有一个 C++ 库(“DataTsBroad”)和一个 C++ 测试应用程序(“DataTsBroadTest”)来测试它。
实际上,Lib 和 Test 应用程序都是用 Debian Lenny 编译的。
现在,我想继续在 Debian Lenny(客户限制)上编译我的测试应用程序,但我会在 Squeeze 或 Wheezy 上编译我的库,以便在最新的 Debian 版本上工作。
因此,我在 Squeeze 上成功编译了我的 Lib,但是,之后,当我尝试在 Lenny 上使用此 Lib 编译我的测试应用程序时,它失败了!有一个链接错误:
链接 CXX 可执行文件 DataTsBroadTest /home/nis/pezierg/test/ProductMak/Export/DataTsBroad/L64/Release/libDataTsBroad64.so: 对“std::ctype::_M_widen_init() const@GLIBCXX_3.4.11”的未定义引用
collect2: ld 返回 1 退出状态
make[2]: *** [DataTsBroadTest] 错误 1
make[1]: *** [CMakeFiles/DataTsBroadTest.dir/all] 错误 2
make:*[全部] 错误2
问题肯定是由于奥斯特里姆C++ Lib,我尝试在我的 Lib 中评论它的所有用途,并且它有效。
但我怎样才能真正解决这个问题呢?
答案1
问题似乎来自于使用不同版本的 Glibc:您在 Squeeze 上编译了库,在 Lenny 上编译了应用程序(使用来自 Squeeze 的库)。
看一下输出:
ldd /home/nis/pezierg/test/ProductMak/Export/DataTsBroad/L64/Release/libDataTsBroad64.so