pmdk安装
pkg-config安装
1.yum install autoconf
2.yum install automake
3.yum install libtool
4.git clone git://anongit.freedesktop.org/pkg-config
5../autogen.sh --with-internal-glib进行编译
1)首先系统中如果没有glib,需要先下载编译glib:
wget http://ftp.acc.umu.se/pub/GNOME/sources/glib/2.50/glib-2.50.2.tar.xz
tar xvJf glib-2.50.2.tar.xz
./configure
如果报错显示没有libffi需要安装libffi:yum install libffi-devel
如果报错显示没有libmount,需要安装libmount:yum install libmount -y(如果还是无法解决,显示libmount找不到,那就直接./configure --enable-libmount=no)
make
2)如果报错:
autoreconf: running: aclocal -I m4macros ${ACLOCAL_FLAGS}
m4macros/glib-gettext.m4:39: error: m4_copy: won't overwrite defined macro: glib_DEFUN
m4macros/glib-gettext.m4:39: the top level
autom4te: /usr/bin/m4 failed with exit status: 1
aclocal: error: echo failed with exit status: 1
autoreconf: aclocal failed with exit status: 1
修改方案:
vim glib/m4macros/glib-gettext.m4中修改:
m4_copy([AC_DEFUN],[glib_DEFUN])
m4_copy([AC_REQUIRE],[glib_REQUIRE])
为:
m4_copy_force([AC_DEFUN],[glib_DEFUN])
m4_copy_force([AC_REQUIRE],[glib_REQUIRE])
5.make && make check && make install
如果出现报错
libtool: Version mismatch error.
解决方式删除当前下载的pkg-config,重新运行
git clone git://anongit.freedesktop.org/pkg-config
vim glib/m4macros/glib-gettext.m4中修改:
m4_copy([AC_DEFUN],[glib_DEFUN])
m4_copy([AC_REQUIRE],[glib_REQUIRE])
为:
m4_copy_force([AC_DEFUN],[glib_DEFUN])
m4_copy_force([AC_REQUIRE],[glib_REQUIRE])
yum remove libtool
libtool --version
wget http://mirrors.ustc.edu.cn/gnu/libtool/libtool-2.4.6.tar.gz
tar zxvf libtool-2.4.6.tar.gz && cd libtool-2.4.6
./configure --prefix=/usr
make && make install
然后回到pkg-config文件夹:
./autogen.sh --with-internal-glib
make && make check && make install
安装ndctl
git clone https://github.com/pmem/ndctl.git
./autogen.sh
./configure
1)报错:
asciidoc needed to build documentation
解决:
yum install asciidoc && yum install xmlto
2)报错:
asciidoctor needed to build documentation
解决
yum install asciidoctor
3)报错需要libkmod
解决
./autogen.sh
./configure CFLAGS="-g -O2" --prefix=/usr --sysconfdir=/etc --libdir=/usr/lib
make && make install
yum install systemd-devel(需要libudev)
1)错误,在configure的时候显示找不到libudev
解决:因为pkg-config默认的路径是/usr/lib,而libudev安装在/usr/lib64/pkgconfig,所以需要把这个路径添加到PKG_CONFIG_PATH里面去
export PKG_CONFIG_PATH=/usr/lib64/pkgconfig/:$PKG_CONFIG_PATH
yum install uuid-devel
yum install json-c-devel
make
make check
make install
yum install libfabric && yum install libfabric-devel(安装libfabric(v1.4.2+)(仅在librpmem中需要))
报错:
在make pmdk的时候:如果不下载libfabric-devel会显示rdma/fabric.h: No such file or directory #include <rdma/fabric.h>
pmdk安装
git clone https://github.com/pmem/pmdk.git
make
yum install doxygen
make install
test是否安装成功
cd /src/test
make test
cp testconfig.sh.example testconfig.sh
./RUNTESTS
编译pmem_test文件
错误
如果遇见找不到动态链接库的情况,比如找不到libpmemobj.so.1,但是这个动态链接库在/usr/local/lib64里面。这里加-L也没用。需要添加
解决
export LD_LIBRARY_PATH=/usr/local/lib64:$LD_LIBRARY_PATH
Makefile文件:
PMDK_LINK_FLAGS= -L/usr/local/lib64 -lpmem -lpmemobj -lpmempool -lpmemlog -lpthread -lrt
all: pmemobj
pmemobj:
g++ -std=c++11 -O0 pmdk_object_test.cc -o pmdk_object_test -I../../include $(PMDK_LINK_FLAG)
编译指令:
g++ -std=c++11 -O0 test.cc -o pmdk_object_test -I../../include -L../pmdk -L/usr/local/lib64 -lpmem -lpmemobj -lpmempool -lpmemlog -lpthread -lrt
运行指令:
./pmdk_object_test -I../../include -L../pmdk -L/usr/local/lib64 -lpmem -lpmemobj -lpmempool -lpmemlog -lpthread -lrt