编译了一个Linux程序,在RedHat上运行时提示"libc.so.6: version `GLIBC_2.14' not found",网上搜到这个问题的解决办法,原文http://www.myexception.cn/linux-unix/1622052.html:
【linux】提示"libc.so.6: version `GLIBC_2.14' not found",系统的glibc版本太低
0.以下在系统CentOS 6.3 x86_64上操作
1.试图运行程序,提示"libc.so.6: version `GLIBC_2.14' not found",原因是系统的glibc版本太低,软件编译时使用了较高版本的glibc引起的:
1
2
3
4
5
6
7
8
9
|
[ghui@StuOS bin]$
pwd
/var/VMdisks/cross/mingw32/bin
[ghui@StuOS bin]$
ls
lrelease QtCore4.dll QtNetwork4.dll QtSql4.dll QtXml4.dll
moc QtDeclarative4.dll QtOpenGL4.dll QtSvg4.dll rcc
phonon4.dll QtGui4.dll QtScript4.dll QtTest4.dll uic
qmake QtMultimedia4.dll QtScriptTools4.dll QtWebKit4.dll
[ghui@StuOS bin]$ .
/qmake
.
/qmake
:
/lib64/libc
.so.6: version `GLIBC_2.14' not found (required by .
/qmake
)
|
2.查看系统glibc支持的版本:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
|
[ghui@StuOS bin]$ strings
/lib64/libc
.so.6 |
grep
GLIBC_
GLIBC_2.2.5
GLIBC_2.2.6
GLIBC_2.3
GLIBC_2.3.2
GLIBC_2.3.3
GLIBC_2.3.4
GLIBC_2.4
GLIBC_2.5
GLIBC_2.6
GLIBC_2.7
GLIBC_2.8
GLIBC_2.9
GLIBC_2.10
GLIBC_2.11
GLIBC_2.12
GLIBC_PRIVATE
[ghui@StuOS bin]$ rpm -qa |
grep
glibc
glibc-static-2.12-1.80.el6_3.6.x86_64
glibc-headers-2.12-1.80.el6_3.6.x86_64
glibc-common-2.12-1.80.el6_3.6.x86_64
glibc-devel-2.12-1.80.el6_3.6.x86_64
glibc-static-2.12-1.80.el6_3.6.i686
glibc-devel-2.12-1.80.el6_3.6.i686
glibc-2.12-1.80.el6_3.6.i686
glibc-2.12-1.80.el6_3.6.x86_64
|
3.可以看到最高只支持2.12版本,所以考虑编译解决这个问题:
|
a. 到http://www.gnu.org/software/libc/下载最新版本,我这里下载了glibc-2.14.tar.xz 这个版本,解压到任意目录准备编译
b.这里解压到/var/VMdisks/glibc-2.14/
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
|
[ghui@StuOS bin]$
cd
/var/VMdisks/glibc-2
.14/
[ghui@StuOS glibc-2.14]$
pwd
/var/VMdisks/glibc-2
.14
[ghui@StuOS glibc-2.14]$
ls
abilist config.h.
in
intl README.libm
abi-tags config.log io resolv
aclocal.m4 config.
make
.
in
libc-abis resource
aout configure libidn rt
argp configure.
in
libio Rules
assert conform LICENSES scripts
autom4te.cache CONFORMANCE locale setjmp
bits COPYING localedata shadow
BUGS COPYING.LIB login shlib-versions
build cppflags-iterator.mk mach signal
CANCEL-FCT-WAIVE crypt Makeconfig socket
CANCEL-FILE-WAIVE csu Makefile soft-fp
catgets ctype Makefile.
in
stdio-common
ChangeLog debug Makerules stdlib
ChangeLog.1 dirent malloc streams
ChangeLog.10 dlfcn manual string
ChangeLog.11 elf math sunrpc
ChangeLog.12 extra-lib.mk misc sysdeps
ChangeLog.13 extra-modules.mk NAMESPACE sysvipc
ChangeLog.14 FAQ NEWS termios
ChangeLog.15 FAQ.
in
nis
test
-skeleton.c
ChangeLog.16 gmon NOTES
time
ChangeLog.17 gnulib nptl timezone
ChangeLog.2 grp nptl_db tls.
make
.c
ChangeLog.3 gshadow nscd version.h
ChangeLog.4 hesiod nss Versions.def
ChangeLog.5 hurd o-iterator.mk wcsmbs
ChangeLog.6 iconv po wctype
ChangeLog.7 iconvdata posix WUR-REPORT
ChangeLog.8 include PROJECTS
ChangeLog.9 inet
pwd
conf INSTALL README
|
c.在glibc源码目录建立构建目录,并cd进入构建目录
1
2
|
[ghui@StuOS glibc-2.14]$
mkdir
build
[ghui@StuOS glibc-2.14]$
cd
build
|
d.运行configure配置,make && sudo make install
1
2
3
4
|
[ghui@StuOS build]$ ..
/configure
--prefix=
/opt/glibc-2
.14
[ghui@StuOS build]$
make
-j4
[ghui@StuOS build]$
sudo
make
install
[
sudo
] password
for
ghui:
|
4.临时修改环境变量
1
2
3
4
5
6
7
8
9
10
11
|
[ghui@StuOS bin]$
export
LD_LIBRARY_PATH=
/opt/glibc-2
.14
/lib
:$LD_LIBRARY_PATH
[ghui@StuOS glibc-2.14]$
cd
/var/VMdisks/cross/mingw32/bin/
[ghui@StuOS bin]$ .
/qmake
Usage: .
/qmake
[mode] [options] [files]
QMake has two modes, one mode
for
generating project files based on
some heuristics, and the other
for
generating makefiles. Normally you
shouldn't need to specify a mode, as makefile generation is the default
mode
for
qmake, but you may use this to
test
qmake on an existing project
...
|
此时运行正常,问题解决。