一、编译时提示:
./obj/plugin/group_replication/libmysqlgcs/xdr_gen/xcom_vp_xdr.c:7468: undefined reference to `xdr_array'
../../../plugin/group_replication/libmysqlgcs/libmysqlgcs.a(xcom_vp_xdr.c.o): In function `xdr_reply_type':
./obj/plugin/group_replication/libmysqlgcs/xdr_gen/xcom_vp_xdr.c:7477: undefined reference to `xdr_enum'
../../../plugin/group_replication/libmysqlgcs/libmysqlgcs.a(xcom_vp_xdr.c.o): In function `xdr_pax_msg':
./obj/plugin/group_replication/libmysqlgcs/xdr_gen/xcom_vp_xdr.c:7517: undefined reference to `xdr_uint32_t'
./obj/plugin/group_replication/libmysqlgcs/xdr_gen/xcom_vp_xdr.c:7533: undefined reference to `xdr_pointer'
./obj/plugin/group_replication/libmysqlgcs/xdr_gen/xcom_vp_xdr.c:7535: undefined reference to `xdr_pointer'
./obj/plugin/group_replication/libmysqlgcs/xdr_gen/xcom_vp_xdr.c:7537: undefined reference to `xdr_pointer'
往前翻编译日志发现提示:
-- Performing Test X_PUTLONG_NOT_USE_CONST - Failed
-- Checking for module 'libtirpc'
-- No package 'libtirpc' found
尝试解决1、直接安装:
yum install -y libtirpc-devel
再编译提示:
-- Checking for module 'libtirpc'
-- Found libtirpc, version 0.2.4
CMake Warning at cmake/rpc.cmake:58 (MESSAGE):
Ignoring libtirpc version 0.2.4, need at least 1.0
Call Stack (most recent call first):
尝试解决2:手动添加
版本太低没有捷径可走,只能手动重新编译,从这下载一个新点的版本:https://www.linuxfromscratch.org/blfs/view/svn/basicnet/libtirpc.html
./configure --prefix=`pwd`/install
make -j`nproc` && make install
再移除系统库:
yum remove -y libtirpc-devel
再编译还是提示找不到:
-- Performing Test X_PUTLONG_NOT_USE_CONST - Failed
-- Checking for module 'libtirpc'
-- No package 'libtirpc' found
查看库查找方式:
$ sed -n '49,53p' cmake/rpc.cmake
MACRO(MYSQL_CHECK_RPC)
IF(LINUX AND NOT LIBTIRPC_VERSION_TOO_OLD)
MYSQL_CHECK_PKGCONFIG()
PKG_CHECK_MODULES(TIRPC libtirpc)
ENDIF()
PKG_CHECK_MODULES
方式查找只需要再拷贝一下 .pc
文件即可
cp install/lib/pkgconfig/libtirpc.pc /usr/lib64/pkgconfig/
查找成功提示
-- Found PkgConfig: /usr/bin/pkg-config (found version "0.27.1")
-- Checking for module 'libtirpc'
-- Found libtirpc, version 1.3.2