glibc 知:构建2.34版本

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

获取版本

主页: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 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

canpool

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值