【发布时间】:2012-05-31 12:25:23
【问题描述】:
我开发了一个在 Debian 下编译的 CGI C++ 应用程序。在 Ubuntu 系统上运行此应用程序出现错误:
重定位错误:/lib32/libresolv.so.2:符号 strlen,版本 GLIBC_2.0 未在带有链接时间参考的文件 libc.so.6 中定义
我现在能做什么?我应该在 Ubunto 系统上重新编译吗?我可以更换图书馆吗?
编辑
我将我的应用程序链接到-static。
在 Ubuntu 系统上运行命令 ldd --version 表明我在那里使用了 EGLIB。
【问题讨论】:
-
C 库运行时与您的系统和内核有着错综复杂的联系。最好重新链接您的应用程序。
-
或者用
-static链接应用程序。 -
有一条评论暗示它可能与 32/64 位相关。我检查了。 Ubunto 是 64 位系统,而 Debian 系统不是。
-
@juergend:很好的收获。虽然 64 位系统支持 32 位二进制文件。即你有 /lib32 目录 - 它包含 32 位运行时
标签: c++ runtime-error glibc strlen