我有一个使用ldd版本本地编译的应用程序
我需要在ldd (Ubuntu EGLIBC 2.15-0ubuntu10.4) 2.15
的服务器上运行version 2.12
。因为它是在QT框架中构建的,并且我没有root权限来安装框架或升级libc.so.6
,所以我需要在我的机器上安装一个较旧的glibc来编译,如同post一样。从here下载glibc-2.11.2.tar.gz
后,尝试使用命令./configure --prefix=/usr/oldlibc
安装它,它会显示以下错误:
/bogdan/Downloads/safe/csu/crti.o
/tmp/ccHNBWLa.s: Assembler messages:
/tmp/ccHNBWLa.s: Error: open CFI at the end of file; missing .cfi_endproc directive
/tmp/ccHNBWLa.s: Error: open CFI at the end of file; missing .cfi_endproc directive
make[2]: *** [/home/bogdan/Downloads/safe/csu/crti.o] Error 1
make[2]: Leaving directory `/home/bogdan/Downloads/glibc-2.11/csu'
make[1]: *** [csu/subdir_lib] Error 2
make[1]: Leaving directory `/home/bogdan/Downloads/glibc-2.11'
make: *** [all] Error 2
如何正确安装libc.so.6
?
答案 0 :(得分:0)
我有一个使用ldd版本
本地编译的应用程序
说明ldd
版本是错误的。 ldd
是 glibc
的部分,而glibc
版本会让您感到悲痛。 ldd
本身只有 来处理任何事情。
/tmp/ccHNBWLa.s: Error: open CFI at the end of file; missing .cfi_endproc directive
这种情况正在发生,因为无法使用系统中的新glibc-2.11
构建旧版gcc
。
您可以破解glibc
来源并修复该问题,您可以构建并安装较旧的gcc
并使用 it 来构建glibc-2.11
,或者您可以设置chroot
环境,并在默认位置安装旧的glibc。
chroot
解决方案可能是最简单的,因为您只需将预先构建的(较旧的)软件包安装到其中即可。
另一个“简单”的选择是在虚拟机中构建所有内容。