文章目录
获取版本
主页:https://www.gnu.org/software/libc



这里选择任意一个压缩包下载即可。
构建安装
tar -Jxf glibc-2.34.tar.xz
mkdir build install
cd build
../glibc-2.34/configure --prefix=/usr
make -j4
make install DESTDIR=/xxx/xxx/install
1)make后面的-j4,其中4可以根据CPU数进行调整。
2)DESTDIR需要是绝对路径
3)configure阶段可能会检测某些软件不存在,根据错误提示在主机上安装即可
4)如果使用vmware虚拟机,build目录不能在Linux和Windows共享目录下,否则会构建错误
测试
下面写一个打印hello world的c程序,基于构建的glibc-2.34进行执行。
1)程序 test.c
#include <stdio.h>
int main(void)
{
printf("hello world\n");
return 0;
}
2)编译
gcc test.c
3)执行
基于build目录下的testrun.sh进行执行
$ /xxx/xxx/build/testrun.sh ./a.out
hello world

更多测试方法可以参考 glibc 知:构建和测试
testrun.sh
#!/bin/bash
builddir=`dirname "$0"`
GCONV_PATH="${builddir}/iconvdata"
usage () {
cat << EOF
Usage: $0 [OPTIONS] <program> [ARGUMENTS...]
--tool=TOOL Run with the specified TOOL. It can be strace, valgrind or
container. The container will run within support/test-container.
EOF
exit 1
}
toolname=default
while test $# -gt 0 ; do
case "$1" in
--tool=*)
toolname="${1:7}"
shift
;;
--*)
usage
;;
*)
break
;;
esac
done
if test $# -eq 0 ; then
usage
fi
case "$toolname" in
default)
exec env GCONV_PATH="${builddir}"/iconvdata LOCPATH="${builddir}"/localedata LC_ALL=C "${builddir}"/elf/ld-linux-x86-64.so.2 --library-path "${builddir}":"${builddir}"/math:"${builddir}"/elf:"${builddir}"/dlfcn:"${builddir}"/nss:"${builddir}"/nis:"${builddir}"/rt:"${builddir}"/resolv:"${builddir}"/mathvec:"${builddir}"/support:"${builddir}"/crypt:"${builddir}"/nptl ${1+"$@"}
;;
strace)
exec strace -EGCONV_PATH=/home/maminjie/glibc/build/iconvdata -ELOCPATH=/home/maminjie/glibc/build/localedata -ELC_ALL=C /home/maminjie/glibc/build/elf/ld-linux-x86-64.so.2 --library-path /home/maminjie/glibc/build:/home/maminjie/glibc/build/math:/home/maminjie/glibc/build/elf:/home/maminjie/glibc/build/dlfcn:/home/maminjie/glibc/build/nss:/home/maminjie/glibc/build/nis:/home/maminjie/glibc/build/rt:/home/maminjie/glibc/build/resolv:/home/maminjie/glibc/build/mathvec:/home/maminjie/glibc/build/support:/home/maminjie/glibc/build/crypt:/home/maminjie/glibc/build/nptl ${1+"$@"}
;;
valgrind)
exec env GCONV_PATH=/home/maminjie/glibc/build/iconvdata LOCPATH=/home/maminjie/glibc/build/localedata

本文介绍glibc的构建安装过程及测试方法。包括如何下载、解压、配置、编译和安装glibc,并通过testrun.sh脚本进行不同工具如strace、valgrind等的测试。
最低0.47元/天 解锁文章
1378

被折叠的 条评论
为什么被折叠?



