CenterOS上默认的Glibc版本为2.12.1,由于我们的Android项目使用到了JNI,将项目构建部署在服务器上时会遇到问题'GLIBC_2.14' not found,那么就需要升级Glibc2.14.升级的教程网上很多,可是却漏掉了一个步骤,导致后面中文乱码的问题.本篇会做一个全面的解说

1. Glibc下载

首先从Glibc Download下载包,这里选择是Glibc 2.14

2. 安装

上传至服务器,进入目录解压

1
tar zxvf glibc-2.14.tar.gz

进入解压后的目录

1
cd glibc-2.14

接着

1
2
3
4
5
mkdir /opt/build
cd build
../configure --prefix=/opt/glibc-2.14
make -j4
make install

若顺利的话,至此则安装成功了.

issue

1. 在make install过程中出现错误:

1
Can't open configuration file /opt/glibc-2.14/etc/ld.so.conf: No such file or directory

缺少了报错的编译文件ld.so.conf.通过find命令找到对应的文件配置

然后拷贝文件至对应文件目录,继续编译

1
2
cp /etc/ld.so.conf /opt/glibc-2.14/etc/ 
make install

编译成功,接着定义下环境变量即可

3. 补充

通常的教程至此就结束了.最初笔者参考网上的教程也是做到这里.当时跑程序也没问题,直到前段时间大楼停电,服务器重启后,通过服务器上Jenkins打包上传到蒲公英的中文信息全是乱码! 相当于服务器的编码文件丢失了,所有中文都会乱码.

是因为遗漏了localedata未编译,在服务器重启后,Glibc2.14找不到对应版本2.14glibc locale文件.

正确操作是,在make&make install完成后继续编译local包

1
make localedata/install-locales

编译需要一些时间,完成后重启服务器即可生效

1
shutdown -r now

  1. 参考: http://blog.csdn.net/clirus/article/details/62425498
  2. 参考: http://blog.csdn.net/fzuzhanghao1993/article/details/77650500