multichase可以衡量内存间的带宽、延迟,是一种新的内存测试工具。
系统、工具版本:
RHEL 8.3安装gcc和glibc
OS gcc版本8.3.1
OS glibc版本 glibc-2.28
以下操作需要root
操作方案:
1.安装最新版gcc gcc-10.2
去gcc官网随便找个快的mirror site,网站列表:
https://gcc.gnu.org/mirrors.html
例如:wget http://ftp.tsukuba.wide.ad.jp/software/gcc/releases/gcc-10.2.0/gcc-10.2.0.tar.xz
物理距离来说,这个霓虹的看起来快一点~
下载后执行:
tar -xvf gcc-10.2.0.tar.xz
cd gcc-10.2.0/
./contrib/download_prerequisites
依赖关系解决最快捷的方法是执行上述命令,不用安装时报错解决,不然有可能还会出现版本问题导致的安装报错,要是网络有问题,还是去gcc官网
ftp://gcc.gnu.org/pub/gcc/infrastructure/找对应显示版本下载安装
创建build文件夹和编译库文件夹,两个文件夹路径分开,编译时--prefix指定编译库文件夹,以免混乱
build文件夹:mkdir ../gcc-10.2.0/build
编译库文件夹:mkdir /usr/lib/gcc-10.2.0
编译安装:
cd build/
../configure --prefix=/usr/lib/gcc-10.2.0/ --enable-checking=release --enable-languages=c,c++ --disable-multilib
make -j64
make install
编译完成后查看
cd /usr/lib/gcc-10.2.0/ 目录下有gcc的各种库
修改旧版本软链接,建立新的版本链接
mv /usr/bin/gcc /usr/bin/gcc-8.3.1
mv /usr/bin/g++ /usr/bin/g++-8.3.1
alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-8.3.1 99 --slave /usr/bin/g++ g++ /usr/bin/g++-8.3.1
alternatives --install /usr/bin/gcc gcc /usr/lib/gcc-10.2.0/bin/x86_64-pc-linux-gnu-gcc 99 --slave /usr/bin/g++ g++ /usr/lib/gcc-10.2.0/bin/x86_64-pc-linux-gnu-g++
alternatives --config gcc
输入2,就是我们刚刚装的gcc-10.2.0
查看当前版本
gcc -v
g++ -v
库报错的话,把/usr/lib或者/usr/lib64底下软链接删除,重新把/usr/lib/gcc-10.2.0/下的相应库链接过去
2. 拷贝multichase源码包:git clone
https://github.com/google/multichase.git
安装:
cd multichase
make
multichase到目前为止已经可以安装了,只在本机使用的话把makefile里的-static静态编译选项去掉,其他参数等同后续步骤,若要其他机器进行使用,则还需装静态编译需要的静态库
直接编译报错:
解决方案:
/usr/lib里查看下该报错库版本号,执行以下命令查看库属于哪个包:
rpm -qf librt-2.28.so
得到:
glibc-2.28-127.el8.i686
其他几个库同理,都是glibc的
安装glibc源码包,编译静态库。安装时装glibc-2.33,其他版本的glibc安装时会出现-Werror=array-parameter的报错,详情查看
https://sourceware.org/bugzilla/show_bug.cgi?id=26647
既然大佬更新解决了就直接用glibc-2.33版本,直接下载:
wget http://ftp.gnu.org/gnu/libc/glibc-2.33.tar.xz
解压:
tar -xvf glibc-2.33.tar.xz
cd glibc-2.33
同样的套路:
build文件夹:mkdir ../glibc-2.33/build
编译库文件夹:mkdir /usr/local/glibc-2.33
安装:
cd build
../configure --prefix=/usr/local/glibc-2.33
make
make install
装好了,去相应文件夹底下看一眼
cd /usr/local/glibc-2.33/lib
可以看到已经有.a的静态库了
3. 修改multichase的Makefile:
在LDLIBS最后 -L/路径 加上刚刚编译的静态库的路径
-march=znver3是x86 AMD MILAN平台的优化参数,x86 INTEL做gcc其他参数修改,其他x86平台可以不用添加,下面那里需要保留,填写: x86-64
改完makefile重新make,生成可执行文件,执行测试。