记录一下过程

首先是下载glibc并解压

wget https://ftp.gnu.org/gnu/glibc/glibc-2.23.tar.gz

手动编译glibc

tar -zxvf glibc-2.23.tar.gz
cd glibc-2.23
mkdir build
sudo apt install gawk
CFLAGS="-g -g3 -ggdb -gdwarf-4 -Og -Wno-error" CXXFLAGS="-g -g3 -ggdb -gdwarf-4 -Og -Wno-error" ../configure --prefix=/home/aaa/glibc-2.23/64
sudo make -j8
sudo make install

错误1

/tmp/ccPRCqlU.s: Error: `loc1@GLIBC_2.2.5' can't be versioned to common symbol 'loc1'
/tmp/ccPRCqlU.s: Error: `loc2@GLIBC_2.2.5' can't be versioned to common symbol 'loc2'
/tmp/ccPRCqlU.s: Error: `locs@GLIBC_2.2.5' can't be versioned to common symbol 'locs'

方法是修改glibc-2.23/misc/regexp.c文件,修改这4处

#include <stdlib.h> //开头加上这个头文件

char *loc1 = NULL;  //33行左右
char *loc2 = NULL;

char *locs = NULL;  //39行

错误2

 Warning: ignoring configuration file that cannot be opened: /home/assassinq/glibc-2.23/64/etc/ld.so.conf: No such file or directory

解决方法

cd ../64/etc && sudo touch ld.so.conf

然后再make install就安装完成了