CentOS 7 编译ZooKeeper C客户端
简介
本文主要讲解:Zookeeper C客户端库在Centos 7上的编译,使用的Zookeeper版本为3.4.13。
工具安装
安装ant 和cppunit-devel工具:
[root@localhost source_code]# yum install -y cppunit-devel
已加载插件:fastestmirror
Loading mirror speeds from cached hostfile* base: mirrors.aliyun.com* extras: mirrors.aliyun.com* updates: mirrors.aliyun.com
base | 3.6 kB 00:00:00
docker-ce-stable | 3.5 kB 00:00:00
extras | 2.9 kB 00:00:00
updates | 2.9 kB 00:00:00
updates/7/x86_64/primary_db | 22 MB 00:02:01
正在解决依赖关系
--> 正在检查事务
---> 软件包 cppunit-devel.x86_64.0.1.12.1-11.el7 将被 安装
--> 正在处理依赖关系 cppunit = 1.12.1-11.el7,它被软件包 cppunit-devel-1.12.1-11.el7.x86_64 需要
--> 正在处理依赖关系 automake,它被软件包 cppunit-devel-1.12.1-11.el7.x86_64 需要
********
[root@localhost source_code]# yum install -y ant
已加载插件:fastestmirror
Loading mirror speeds from cached hostfile* base: mirrors.aliyun.com* extras: mirrors.aliyun.com* updates: mirrors.aliyun.com
正在解决依赖关系
--> 正在检查事务
---> 软件包 ant.noarch.0.1.9.4-2.el7 将被 安装
--> 正在处理依赖关系 jpackage-utils >= 1.7.5,它被软件包 ant-1.9.4-2.el7.noarch 需要
--> 正在处理依赖关系 java-devel >= 1.5.0,它被软件包 ant-1.9.4-2.el7.noarch 需要
--> 正在处理依赖关系 xml-commons-apis,它被软件包 ant-1.9.4-2.el7.noarch 需要
--> 正在处理依赖关系 xerces-j2,它被软件包 ant-1.9.4-2.el7.noarch 需要
--> 正在处理依赖关系 jpackage-utils,它被软件包 ant-1.9.4-2.el7.noarch 需要
--> 正在检查事务
---> 软件包 java-1.8.0-openjdk-devel.x86_64.1.1.8.0.382.b05-1.el7_9 将被 安装
--> 正在处理依赖关系 java-1.8.0-openjdk(x86-64) = 1:1.8.0.382.b05-1.el7_9,它
******
查看ant 版本信息:
[root@localhost apache-zookeeper-3.8.2]# ant -version
Apache Ant(TM) version 1.9.4 compiled on November 5 2018
编译
下载 zookeeper-release-3.4.13.tar.gz 源码, zookeeper 源码存放文件目录:/usr/local/source_code
温馨提示:使用wget 工具通过github 下载指定zookeeper 源码。
第一步:安装wget 工具
[root@localhost source_code]# yum install wget
已加载插件:fastestmirror
Loading mirror speeds from cached hostfile* base: mirrors.aliyun.com* extras: mirrors.aliyun.com* updates: mirrors.aliyun.com
正在解决依赖关系
--> 正在检查事务
---> 软件包 wget.x86_64.0.1.14-18.el7_6.1 将被 安装
--> 解决依赖关系完成
******
第二步:下载 zookeeper-release-3.4.13.tar.gz 源码
[root@localhost source_code]# wget https://github.com/apache/zookeeper/archive/release-3.4.13.tar.gz
--2023-08-31 16:21:19-- https://github.com/apache/zookeeper/archive/release-3.4.13.tar.gz
正在解析主机 github.com (github.com)... 140.82.113.4
正在连接 github.com (github.com)|140.82.113.4|:443... 已连接。
******
第三步:解压
[root@localhost source_code]# tar -zxvf release-3.4.13.tar.gz
zookeeper-release-3.4.13/
zookeeper-release-3.4.13/.gitattributes
zookeeper-release-3.4.13/.gitignore
zookeeper-release-3.4.13/LICENSE.txt
zookeeper-release-3.4.13/NOTICE.txt
zookeeper-release-3.4.13/README.md
******
第四步:进入ZooKeeper 的根目录,执行如下命令:
ant clean jar
ant compile_jute
[root@localhost zookeeper-release-3.4.13]# ant clean jar
Buildfile: /usr/local/source_code/zookeeper-release-3.4.13/build.xmlclean-contrib:clean:clean:[echo] contrib: fatjar
******
[root@localhost zookeeper-release-3.4.13]# ant compile_jute
Buildfile: /usr/local/source_code/zookeeper-release-3.4.13/build.xmlinit:jute:compile_jute_uptodate:compile_jute:BUILD SUCCESSFUL
Total time: 0 seconds
第五步:生成ZooKeeper 配置文件
执行如下指令:
autoreconf -if
[root@localhost c]# autoreconf -if
libtoolize: putting auxiliary files in `.'.
libtoolize: copying file `./ltmain.sh'
libtoolize: Consider adding `AC_CONFIG_MACRO_DIR([m4])' to configure.ac and
libtoolize: rerunning libtoolize, to keep the correct libtool macros in-tree.
libtoolize: Consider adding `-I m4' to ACLOCAL_AMFLAGS in Makefile.am.
configure.ac:51: installing './compile'
configure.ac:57: installing './config.guess'
configure.ac:57: installing './config.sub'
configure.ac:25: installing './install-sh'
configure.ac:25: installing './missing'
Makefile.am:80: warning: wildcard ${srcdir}/tests/*.cc: non-POSIX variable name
Makefile.am:80: (probably a GNU make extension)
Makefile.am:80: warning: wildcard ${srcdir}/tests/*.h: non-POSIX variable name
Makefile.am:80: (probably a GNU make extension)
Makefile.am:93: warning: SHELL_SYMBOL_WRAPPERS:sh: non-POSIX variable name
Makefile.am:95: warning: shell cat ${srcdir}/tests/wrappers.opt: non-POSIX variable name
******
第六步:编译安装ZooKeeper C客户端,执行如下指令。
温馨提示:需要从ZooKeeper 根目录切换至
/usr/local/source_code/zookeeper-release-3.4.13/src/c
./configure
make
make install
[root@localhost c]# ./configure
checking for doxygen... no
checking for perl... /usr/bin/perl
checking for dot... no
checking for a BSD-compatible install... /usr/bin/install -c
checking whether build environment is sane... yes
checking for a thread-safe mkdir -p... /usr/bin/mkdir -p
checking for gawk... gawk
checking whether make sets $(MAKE)... yes
checking whether make supports nested variables... yes
checking for cppunit-config... /usr/bin/cppunit-config
checking for Cppunit - version >= 1.10.2... 1.12.1
checking for generated/zookeeper.jute.c... yes
checking for generated/zookeeper.jute.h... yes
checking for gcc... gcc
checking whether the C compiler works... yes
checking for C compiler default output file name... a.out
******
[root@localhost c]# make
make all-am
make[1]: 进入目录“/usr/local/source_code/zookeeper-release-3.4.13/src/c”
/bin/sh ./libtool --tag=CC --mode=compile gcc -DHAVE_CONFIG_H -I. -I./include -I./tests -I./generated -Wall -Werror -g -O2 -D_GNU_SOURCE -MT zookeeper.lo -MD -MP -MF .deps/zookeeper.Tpo -c -o zookeeper.lo `test -f 'src/zookeeper.c' || echo './'`src/zookeeper.c
libtool: compile: gcc -DHAVE_CONFIG_H -I. -I./include -I./tests -I./generated -Wall -Werror -g -O2 -D_GNU_SOURCE -MT zookeeper.lo -MD -MP -MF .deps/zookeeper.Tpo -c src/zookeeper.c -fPIC -DPIC -o .libs/zookeeper.o
libtool: compile: gcc -DHAVE_CONFIG_H -I. -I./include -I./tests -I./generated -Wall -Werror -g -O2 -D_GNU_SOURCE -MT zookeeper.lo -MD -MP -MF .deps/zookeeper.Tpo -c src/zookeeper.c -o zookeeper.o >/dev/null 2>&1
mv -f .deps/zookeeper.Tpo .deps/zookeeper.Plo
/bin/sh ./libtool --tag=CC --mode=compile gcc -DHAVE_CONFIG_H -I. -I./include -I./tests -I./generated -Wall -Werror -g -O2 -D_GNU_SOURCE -MT recordio.lo -MD -MP -MF .deps/recordio.Tpo -c -o recordio.lo `test -f 'src/recordio.c' || echo './'`src/recordio.c
libtool: compile: gcc -DHAVE_CONFIG_H -I. -I./include -I./tests -I./generated -Wall -Werror -g -O2 -D_GNU_SOURCE -MT recordio.lo -MD -MP -MF .deps/recordio.Tpo -c src/recordio.c -fPIC -DPIC -o .libs/recordio.o
libtool: compile: gcc -DHAVE_CONFIG_H -I. -I./include -I./tests -I./generated -Wall -Werror -g -O2 -D_GNU_SOURCE -MT recordio.lo -MD -MP -MF .deps/recordio.Tpo -c src/recordio.c -o recordio.o >/dev/null 2>&1
mv -f .deps/recordio.Tpo .deps/recordio.Plo
/bin/sh ./libtool --tag=CC --mode=compile gcc -DHAVE_CONFIG_H -I. -I./include -I./tests -I./generated -Wall -Werror -g -O2 -D_GNU_SOURCE -MT zookeeper.jute.lo -MD -MP -MF .deps/zookeeper.jute.Tpo -c -o zookeeper.jute.lo `test -f 'generated/zookeeper.jute.c' || echo './'`generated/zookeeper.jute.c
libtool: compile: gcc -DHAVE_CONFIG_H -I. -I./include -I./tests -I./generated -
******
[root@localhost c]# make install
make[1]: 进入目录“/usr/local/source_code/zookeeper-release-3.4.13/src/c”/usr/bin/mkdir -p '/usr/local/lib'/bin/sh ./libtool --mode=install /usr/bin/install -c libzookeeper_st.la libzookeeper_mt.la '/usr/local/lib'
libtool: install: /usr/bin/install -c .libs/libzookeeper_st.so.2.0.0 /usr/local/lib/libzookeeper_st.so.2.0.0
libtool: install: (cd /usr/local/lib && { ln -s -f libzookeeper_st.so.2.0.0 libzookeeper_st.so.2 || { rm -f libzookeeper_st.so.2 && ln -s libzookeeper_st.so.2.0.0 libzookeeper_st.so.2; }; })
libtool: install: (cd /usr/local/lib && { ln -s -f libzookeeper_st.so.2.0.0 libzookeeper_st.so || { rm -f libzookeeper_st.so && ln -s libzookeeper_st.so.2.0.0 libzookeeper_st.so; }; })
libtool: install: /usr/bin/install -c .libs/libzookeeper_st.lai /usr/local/lib/libzookeeper_st.la
libtool: install: /usr/bin/install -c .libs/libzookeeper_mt.so.2.0.0 /usr/local/lib/libzookeeper_mt.so.2.0.0
libtool: install: (cd /usr/local/lib && { ln -s -f libzookeeper_mt.so.2.0.0 libzookeeper_mt.so.2 || { rm -f libzookeeper_mt.so.2 && ln -s libzookeeper_mt.so.2.0.0 libzookeeper_mt.so.2; }; })
libtool: install: (cd /usr/local/lib && { ln -s -f libzookeeper_mt.so.2.0.0 libzookeeper_mt.so || { rm -f libzookeeper_mt.so && ln -s libzookeeper_mt.so.2.0.0 libzookeeper_mt.so; }; })
libtool: install: /usr/bin/install -c .libs/libzookeeper_mt.lai /usr/local/lib/libzookeeper_mt.la
libtool: install: /usr/bin/install -c .libs/libzookeeper_st.a /usr/local/lib/libzookeeper_st.a
libtool: install: chmod 644 /usr/local/lib/libzookeeper_st.a
libtool: install: ranlib /usr/local/lib/libzookeeper_st.a
libtool: install: /usr/bin/install -c .libs/libzookeeper_mt.a /usr/local/lib/libzookeeper_mt.a
libtool: install: chmod 644 /usr/local/lib/libzookeeper_mt.a
******
ZooKeeper C客户端头文件和链接库位置
zookeeper 生成头文件名称:zookeeper.h
zookeeper 生成链接库名称:
[root@localhost include]# pwd
/usr/local/source_code/zookeeper-release-3.4.13/src/c/include
[root@localhost include]# ls -al
总用量 96
drwxrwxr-x. 2 root root 127 6月 22 2018 .
drwxrwxr-x. 9 root root 4096 8月 31 16:56 ..
-rw-rw-r--. 1 root root 1361 6月 22 2018 proto.h
-rw-rw-r--. 1 root root 3077 6月 22 2018 recordio.h
-rw-rw-r--. 1 root root 355 6月 22 2018 winconfig.h
-rw-rw-r--. 1 root root 72869 6月 22 2018 zookeeper.h
-rw-rw-r--. 1 root root 1747 6月 22 2018 zookeeper_log.h
-rw-rw-r--. 1 root root 1055 6月 22 2018 zookeeper_version.h
常见问题
ZooKeeper 生成自动配置文件报错。
解决办法:执行如下指令 yum install autoconf automake
[root@localhost zookeeper-release-3.4.13]# autoreconf -if
autoreconf: 'configure.ac' or 'configure.in' is required
[root@localhost zookeeper-release-3.4.13]# yum install autoconf automake
已加载插件:fastestmirror
Loading mirror speeds from cached hostfile* base: mirrors.aliyun.com* extras: mirrors.aliyun.com* updates: mirrors.aliyun.com
base | 3.6 kB 00:00:00
docker-ce-stable | 3.5 kB 00:00:00
extras | 2.9 kB 00:00:00
updates | 2.9 kB 00:00:00
软件包 autoconf-2.69-11.el7.noarch 已安装并且是最新版本
******
编译ZooKeeper 报错
[root@localhost c]# autoreconf -if
configure.ac:57: error: possibly undefined macro: AC_PROG_LIBTOOLIf this token and others are legitimate, please use m4_pattern_allow.See the Autoconf documentation.
autoreconf: /usr/bin/autoconf failed with exit status: 1
原因:在处理configure.ac
文件时出错了,认为AC_PROG_LIBTOOL
是未定义的宏,使得执行autoreconf
失败,安装libtool
包得以解决:
[root@localhost c]# yum install libtool
已加载插件:fastestmirror
Loading mirror speeds from cached hostfile* base: mirrors.aliyun.com* extras: mirrors.aliyun.com* updates: mirrors.aliyun.com
正在解决依赖关系
--> 正在检查事务
---> 软件包 libtool.x86_64.0.2.4.2-22.el7_3 将被 安装
--> 解决依赖关系完成依赖关系解决
******
CentOS 7 ZooKeeper C 客户端源码编译指令:
[root@localhost source_code]# yum install -y cppunit-devel
已加载插件:fastestmirror
Loading mirror speeds from cached hostfile* base: mirrors.aliyun.com* extras: mirrors.aliyun.com* updates: mirrors.aliyun.com
base | 3.6 kB 00:00:00
docker-ce-stable | 3.5 kB 00:00:00
extras | 2.9 kB 00:00:00
updates | 2.9 kB 00:00:00
updates/7/x86_64/primary_db | 22 MB 00:02:01
正在解决依赖关系
--> 正在检查事务
---> 软件包 cppunit-devel.x86_64.0.1.12.1-11.el7 将被 安装
--> 正在处理依赖关系 cppunit = 1.12.1-11.el7,它被软件包 cppunit-devel-1.12.1-11.el7.x86_64 需要
--> 正在处理依赖关系 automake,它被软件包 cppunit-devel-1.12.1-11.el7.x86_64 需要
********
[root@localhost source_code]# yum install -y ant
已加载插件:fastestmirror
Loading mirror speeds from cached hostfile* base: mirrors.aliyun.com* extras: mirrors.aliyun.com* updates: mirrors.aliyun.com
正在解决依赖关系
--> 正在检查事务
---> 软件包 ant.noarch.0.1.9.4-2.el7 将被 安装
--> 正在处理依赖关系 jpackage-utils >= 1.7.5,它被软件包 ant-1.9.4-2.el7.noarch 需要
--> 正在处理依赖关系 java-devel >= 1.5.0,它被软件包 ant-1.9.4-2.el7.noarch 需要
--> 正在处理依赖关系 xml-commons-apis,它被软件包 ant-1.9.4-2.el7.noarch 需要
--> 正在处理依赖关系 xerces-j2,它被软件包 ant-1.9.4-2.el7.noarch 需要
--> 正在处理依赖关系 jpackage-utils,它被软件包 ant-1.9.4-2.el7.noarch 需要
--> 正在检查事务
---> 软件包 java-1.8.0-openjdk-devel.x86_64.1.1.8.0.382.b05-1.el7_9 将被 安装
--> 正在处理依赖关系 java-1.8.0-openjdk(x86-64) = 1:1.8.0.382.b05-1.el7_9,它
******
[root@localhost apache-zookeeper-3.8.2]# ant -version
Apache Ant(TM) version 1.9.4 compiled on November 5 2018
[root@localhost source_code]# yum install wget
已加载插件:fastestmirror
Loading mirror speeds from cached hostfile* base: mirrors.aliyun.com* extras: mirrors.aliyun.com* updates: mirrors.aliyun.com
正在解决依赖关系
--> 正在检查事务
---> 软件包 wget.x86_64.0.1.14-18.el7_6.1 将被 安装
--> 解决依赖关系完成
******
[root@localhost source_code]# wget https://github.com/apache/zookeeper/archive/release-3.4.13.tar.gz
--2023-08-31 16:21:19-- https://github.com/apache/zookeeper/archive/release-3.4.13.tar.gz
正在解析主机 github.com (github.com)... 140.82.113.4
正在连接 github.com (github.com)|140.82.113.4|:443... 已连接。
******
[root@localhost source_code]# tar -zxvf release-3.4.13.tar.gz
zookeeper-release-3.4.13/
zookeeper-release-3.4.13/.gitattributes
zookeeper-release-3.4.13/.gitignore
zookeeper-release-3.4.13/LICENSE.txt
zookeeper-release-3.4.13/NOTICE.txt
zookeeper-release-3.4.13/README.md
******
[root@localhost zookeeper-release-3.4.13]# ant clean jar
Buildfile: /usr/local/source_code/zookeeper-release-3.4.13/build.xmlclean-contrib:clean:clean:[echo] contrib: fatjar
******
[root@localhost zookeeper-release-3.4.13]# ant compile_jute
Buildfile: /usr/local/source_code/zookeeper-release-3.4.13/build.xmlinit:jute:compile_jute_uptodate:compile_jute:BUILD SUCCESSFUL
Total time: 0 seconds
-- 问题一
[root@localhost zookeeper-release-3.4.13]# autoreconf -if
autoreconf: 'configure.ac' or 'configure.in' is required
-- 问题一,解决办法
[root@localhost zookeeper-release-3.4.13]# yum install autoconf automake
已加载插件:fastestmirror
Loading mirror speeds from cached hostfile* base: mirrors.aliyun.com* extras: mirrors.aliyun.com* updates: mirrors.aliyun.com
base | 3.6 kB 00:00:00
docker-ce-stable | 3.5 kB 00:00:00
extras | 2.9 kB 00:00:00
updates | 2.9 kB 00:00:00
软件包 autoconf-2.69-11.el7.noarch 已安装并且是最新版本
******
切换至zookeeper/src/c 目录
[root@localhost c]# pwd
/usr/local/source_code/zookeeper-release-3.4.13/src/c
-- 问题二
[root@localhost c]# autoreconf -if
configure.ac:57: error: possibly undefined macro: AC_PROG_LIBTOOLIf this token and others are legitimate, please use m4_pattern_allow.See the Autoconf documentation.
autoreconf: /usr/bin/autoconf failed with exit status: 1
-- 问题二,解决办法
[root@localhost c]# yum install libtool
已加载插件:fastestmirror
Loading mirror speeds from cached hostfile* base: mirrors.aliyun.com* extras: mirrors.aliyun.com* updates: mirrors.aliyun.com
正在解决依赖关系
--> 正在检查事务
---> 软件包 libtool.x86_64.0.2.4.2-22.el7_3 将被 安装
--> 解决依赖关系完成依赖关系解决
******
[root@localhost c]# autoreconf -if
libtoolize: putting auxiliary files in `.'.
libtoolize: copying file `./ltmain.sh'
libtoolize: Consider adding `AC_CONFIG_MACRO_DIR([m4])' to configure.ac and
libtoolize: rerunning libtoolize, to keep the correct libtool macros in-tree.
libtoolize: Consider adding `-I m4' to ACLOCAL_AMFLAGS in Makefile.am.
configure.ac:51: installing './compile'
configure.ac:57: installing './config.guess'
configure.ac:57: installing './config.sub'
configure.ac:25: installing './install-sh'
configure.ac:25: installing './missing'
Makefile.am:80: warning: wildcard ${srcdir}/tests/*.cc: non-POSIX variable name
Makefile.am:80: (probably a GNU make extension)
Makefile.am:80: warning: wildcard ${srcdir}/tests/*.h: non-POSIX variable name
Makefile.am:80: (probably a GNU make extension)
Makefile.am:93: warning: SHELL_SYMBOL_WRAPPERS:sh: non-POSIX variable name
Makefile.am:95: warning: shell cat ${srcdir}/tests/wrappers.opt: non-POSIX variable name
******
[root@localhost c]# ./configure
checking for doxygen... no
checking for perl... /usr/bin/perl
checking for dot... no
checking for a BSD-compatible install... /usr/bin/install -c
checking whether build environment is sane... yes
checking for a thread-safe mkdir -p... /usr/bin/mkdir -p
checking for gawk... gawk
checking whether make sets $(MAKE)... yes
checking whether make supports nested variables... yes
checking for cppunit-config... /usr/bin/cppunit-config
checking for Cppunit - version >= 1.10.2... 1.12.1
checking for generated/zookeeper.jute.c... yes
checking for generated/zookeeper.jute.h... yes
checking for gcc... gcc
checking whether the C compiler works... yes
checking for C compiler default output file name... a.out
******
[root@localhost c]# make
make all-am
make[1]: 进入目录“/usr/local/source_code/zookeeper-release-3.4.13/src/c”
/bin/sh ./libtool --tag=CC --mode=compile gcc -DHAVE_CONFIG_H -I. -I./include -I./tests -I./generated -Wall -Werror -g -O2 -D_GNU_SOURCE -MT zookeeper.lo -MD -MP -MF .deps/zookeeper.Tpo -c -o zookeeper.lo `test -f 'src/zookeeper.c' || echo './'`src/zookeeper.c
libtool: compile: gcc -DHAVE_CONFIG_H -I. -I./include -I./tests -I./generated -Wall -Werror -g -O2 -D_GNU_SOURCE -MT zookeeper.lo -MD -MP -MF .deps/zookeeper.Tpo -c src/zookeeper.c -fPIC -DPIC -o .libs/zookeeper.o
libtool: compile: gcc -DHAVE_CONFIG_H -I. -I./include -I./tests -I./generated -Wall -Werror -g -O2 -D_GNU_SOURCE -MT zookeeper.lo -MD -MP -MF .deps/zookeeper.Tpo -c src/zookeeper.c -o zookeeper.o >/dev/null 2>&1
mv -f .deps/zookeeper.Tpo .deps/zookeeper.Plo
/bin/sh ./libtool --tag=CC --mode=compile gcc -DHAVE_CONFIG_H -I. -I./include -I./tests -I./generated -Wall -Werror -g -O2 -D_GNU_SOURCE -MT recordio.lo -MD -MP -MF .deps/recordio.Tpo -c -o recordio.lo `test -f 'src/recordio.c' || echo './'`src/recordio.c
libtool: compile: gcc -DHAVE_CONFIG_H -I. -I./include -I./tests -I./generated -Wall -Werror -g -O2 -D_GNU_SOURCE -MT recordio.lo -MD -MP -MF .deps/recordio.Tpo -c src/recordio.c -fPIC -DPIC -o .libs/recordio.o
libtool: compile: gcc -DHAVE_CONFIG_H -I. -I./include -I./tests -I./generated -Wall -Werror -g -O2 -D_GNU_SOURCE -MT recordio.lo -MD -MP -MF .deps/recordio.Tpo -c src/recordio.c -o recordio.o >/dev/null 2>&1
mv -f .deps/recordio.Tpo .deps/recordio.Plo
/bin/sh ./libtool --tag=CC --mode=compile gcc -DHAVE_CONFIG_H -I. -I./include -I./tests -I./generated -Wall -Werror -g -O2 -D_GNU_SOURCE -MT zookeeper.jute.lo -MD -MP -MF .deps/zookeeper.jute.Tpo -c -o zookeeper.jute.lo `test -f 'generated/zookeeper.jute.c' || echo './'`generated/zookeeper.jute.c
libtool: compile: gcc -DHAVE_CONFIG_H -I. -I./include -I./tests -I./generated -
******
[root@localhost c]# make install
make[1]: 进入目录“/usr/local/source_code/zookeeper-release-3.4.13/src/c”/usr/bin/mkdir -p '/usr/local/lib'/bin/sh ./libtool --mode=install /usr/bin/install -c libzookeeper_st.la libzookeeper_mt.la '/usr/local/lib'
libtool: install: /usr/bin/install -c .libs/libzookeeper_st.so.2.0.0 /usr/local/lib/libzookeeper_st.so.2.0.0
libtool: install: (cd /usr/local/lib && { ln -s -f libzookeeper_st.so.2.0.0 libzookeeper_st.so.2 || { rm -f libzookeeper_st.so.2 && ln -s libzookeeper_st.so.2.0.0 libzookeeper_st.so.2; }; })
libtool: install: (cd /usr/local/lib && { ln -s -f libzookeeper_st.so.2.0.0 libzookeeper_st.so || { rm -f libzookeeper_st.so && ln -s libzookeeper_st.so.2.0.0 libzookeeper_st.so; }; })
libtool: install: /usr/bin/install -c .libs/libzookeeper_st.lai /usr/local/lib/libzookeeper_st.la
libtool: install: /usr/bin/install -c .libs/libzookeeper_mt.so.2.0.0 /usr/local/lib/libzookeeper_mt.so.2.0.0
libtool: install: (cd /usr/local/lib && { ln -s -f libzookeeper_mt.so.2.0.0 libzookeeper_mt.so.2 || { rm -f libzookeeper_mt.so.2 && ln -s libzookeeper_mt.so.2.0.0 libzookeeper_mt.so.2; }; })
libtool: install: (cd /usr/local/lib && { ln -s -f libzookeeper_mt.so.2.0.0 libzookeeper_mt.so || { rm -f libzookeeper_mt.so && ln -s libzookeeper_mt.so.2.0.0 libzookeeper_mt.so; }; })
libtool: install: /usr/bin/install -c .libs/libzookeeper_mt.lai /usr/local/lib/libzookeeper_mt.la
libtool: install: /usr/bin/install -c .libs/libzookeeper_st.a /usr/local/lib/libzookeeper_st.a
libtool: install: chmod 644 /usr/local/lib/libzookeeper_st.a
libtool: install: ranlib /usr/local/lib/libzookeeper_st.a
libtool: install: /usr/bin/install -c .libs/libzookeeper_mt.a /usr/local/lib/libzookeeper_mt.a
libtool: install: chmod 644 /usr/local/lib/libzookeeper_mt.a
******
ZooKeeper C连接库文件,存放位置
[root@localhost include]# pwd
/usr/local/source_code/zookeeper-release-3.4.13/src/c/include
[root@localhost include]# ls -al
总用量 96
drwxrwxr-x. 2 root root 127 6月 22 2018 .
drwxrwxr-x. 9 root root 4096 8月 31 16:56 ..
-rw-rw-r--. 1 root root 1361 6月 22 2018 proto.h
-rw-rw-r--. 1 root root 3077 6月 22 2018 recordio.h
-rw-rw-r--. 1 root root 355 6月 22 2018 winconfig.h
-rw-rw-r--. 1 root root 72869 6月 22 2018 zookeeper.h
-rw-rw-r--. 1 root root 1747 6月 22 2018 zookeeper_log.h
-rw-rw-r--. 1 root root 1055 6月 22 2018 zookeeper_version.h
相关文章:
CentOS 7 编译ZooKeeper C客户端
简介 本文主要讲解:Zookeeper C客户端库在Centos 7上的编译,使用的Zookeeper版本为3.4.13。 工具安装 安装ant 和cppunit-devel工具: [rootlocalhost source_code]# yum install -y cppunit-devel 已加载插件:fastestmirror L…...
【2023年数学建模国赛】A题解题思路
2023年数学建模国赛A题解题思路 问题1: 要计算定日镜场的年平均光学效率和年平均输出热功率,以及单位镜面面积年平均输出热功率,我们可以按照以下步骤进行: 遍历所有定日镜的位置,根据给定的定日镜尺寸和安装高度&am…...
人们对区块链的认识开始变得深入和完善,另一条新路径开始衍生
当区块链行业的发展进入到深水区,特别是当有关区块链的狂热与躁动开始退场,仅仅只是主打区块链的概念,而没有找到区块链与现实商业联通的方式和方法,依然成为困扰区块链发展的一大症结。 事实上,从区块链被人们认识…...

关于Comparable、Comparator接口返回值决定顺序的问题
Comparable和Comparator接口都是实现集合中元素的比较、排序的,下面先简单介绍下他们的用法。 1. 使用示例 public class Person {private String name;private Integer age;public Person() {}public Person(String name, Integer age) {this.name name;this.ag…...

js 根据键判断值
最原始的写法: 改进后的写法: const DeviceTypeObj {SO2: "SO<sub>2</sub>",CO: "CO",NO: "NO",NO2: "NO<sub>2</sub>",O3: "O<sub>3</sub>", let value Dev…...
堆排序,以及大顶堆构造过程Java实现
import java.util.Arrays;public class Main {public static void main(String[] args) {int a[] new int[] { 1, 1, 23, 456, 0 };// int a初始化方式int bb[] { 1, 2, 3, 4 };// int c[5] {1,2,34,5,6};//错误int d[] new int[6]; // 初始为0// int e[] new int[5]{1,2,…...
【C++】类的封装 ① ( 类和对象 | 面向对象三大特征 - 封装 继承 多态 | 类的封装引入 )
文章目录 一、类和对象1、类和对象概念2、代码示例 - 定义类和对象 二、类的封装1、面向对象三大特征2、类的封装引入 一、类和对象 1、类和对象概念 " 面向对象编程 " 是一种 " 编程范式 " , 可以适用于所有的 高级语言 , C 也包括在内 ; 面向对象编程 基…...

Docker原理详细剖析-Namespace
一、简介 docker容器技术从2013年开始火了以后,2014年左右当时有幸在学校能和学院教授一起做些项目以及学习。其中docker技术在当时来说还算是比较新的技术,国内关于这块的资料以及使用也才刚刚开始,讨论docker技术,算是相对时髦的…...

sql:SQL优化知识点记录(九)
(1)小表驱动大表 对sql调优的分析: 排序优化: 数据库的连接方式,里面的数据尽量这样连接,尽量选择第一个方式,因为两个表的连接一共建立5次连接,第二个建立1000次连接,从…...

【PowerQuery】PowerQuery导入JSON数据
Json数据是目前使用的最为频繁和广泛的一种数据交换格式,JSON的全称为JavaScript Object Notation。Json 主要用于在互联网的消息的数据交换信息传递,他的格式与XML有什么区别呢?为什么不用XML,用Json有啥好处呢?我们接下来讨论下Json相比XML的优势: XML传递的数据过多服…...
bootstrap 主题
颜色值 根据等级 primarysecondarysuccessinfowarningdangerlightdark 根据名字 blackwhiteblueindigopurplepinkredorangeyellowgreentealcyangraygray-darkbrown 好像是self 加的 根据颜色值的转化 var 变量 –bs-**** 比如:–bs-blue,–bs-pri…...

FPGA 学习笔记:Vivado 工程管理技巧
前言 当前使用 Xilinx 的 FPGA,所以需要熟悉 Xilinx FPGA 的 开发利器 Vivado 的工程管理方法 这里初步列举一些实际 Xilinx FPGA 开发基于 Vivado 的项目使用到的工程的管理技巧 代码管理 做过嵌入式软件或者其他软件开发的工程技术人员,都会想到使用代码管理工具,如 SVN 、…...

Java低代码开发:jvs-list(列表引擎)功能(二)字段及样式配置
字段的增减 进入列表页设计器-页表设计界面,点击新增一行、或者删除按钮,可以对字段进行增减操作,如果对于权限的列表页,可以使用批量创建字段的按钮: 字段的批量设置,点击批量添加如下图所示 字段为中文名…...

【Java】线程都有哪几种状态
文章目录 前言传统线程模型(操作系统)中线程状态Java线程中的状态线程的运行流程 前言 首先我们要知道,在传统(操作系统)的线程模型中线程被分为五种状态,在java线程中,线程被分为六种状态。 …...

为什么服务端会有那么多的 TimeWait ?
工作中无论是开发环境还是线上环境,我们都出现过大量的 timewait 状态的连接,例如下面这个例子 服务端简单的开辟一个 web server 监听 9966 端口 客户端进行疯狂的请求服务端 瞬间就可以看到咱们服务端的出现大量的 TIME_WAIT 状态的连接 这个时候&…...

任意文件读取及漏洞复现
文章目录 渗透测试漏洞原理任意文件读取1. 任意文件读取概述1.1 漏洞成因1.2 漏洞危害1.3 漏洞分类1.4 任意文件读取1.4.1 文件读取1.4.2 任意文件读取1.4.3 权限问题 1.5 任意文件下载1.5.1 一般情况1.5.2 PHP实现1.5.3 任意文件下载 2. 任意文件读取攻防2.1 路径过滤2.1.1 过…...
目前的一些关于机器学习的感悟
目前的一些关于机器学习的想法 大家一直都在说深度学习和积极学习,当我在本科的时候,就听到很多关于这方面的东西,但当时自己对于这些东西的概念较为模糊,随着研究生进一步的学习,我想讲一下,到目前我所理…...
salesforce从sandbox部署到生产环境的自定义字段权限没有成功上载
salesforce从sandbox部署到生产环境的自定义字段权限没有成功上载 只将字段名称和类型上载了。 查阅: https://help.salesforce.com/s/articleView?idsf.deploy_special_behavior.htm&type5 显示: 自定义字段 从 API 版本 30.0 开始,…...

字节跳动推出AI对话工具“豆包”:免费用
我是卢松松,点点上面的头像,欢迎关注我哦! 听说松松客服的小马爆料了一个消息:字节跳动推出了一个新的AI大模型对话工具,叫做“豆包”。竟然一查发现,早在8月18号就已经上线了呢。原来这个“豆包”其实是之…...

时序预测 | MATLAB实现TCN-LSTM时间卷积长短期记忆神经网络时间序列预测
时序预测 | MATLAB实现TCN-LSTM时间卷积长短期记忆神经网络时间序列预测 目录 时序预测 | MATLAB实现TCN-LSTM时间卷积长短期记忆神经网络时间序列预测预测效果基本介绍模型描述程序设计参考资料 预测效果 基本介绍 1.MATLAB实现TCN-LSTM时间卷积长短期记忆神经网络时间序列预测…...
浏览器访问 AWS ECS 上部署的 Docker 容器(监听 80 端口)
✅ 一、ECS 服务配置 Dockerfile 确保监听 80 端口 EXPOSE 80 CMD ["nginx", "-g", "daemon off;"]或 EXPOSE 80 CMD ["python3", "-m", "http.server", "80"]任务定义(Task Definition&…...

铭豹扩展坞 USB转网口 突然无法识别解决方法
当 USB 转网口扩展坞在一台笔记本上无法识别,但在其他电脑上正常工作时,问题通常出在笔记本自身或其与扩展坞的兼容性上。以下是系统化的定位思路和排查步骤,帮助你快速找到故障原因: 背景: 一个M-pard(铭豹)扩展坞的网卡突然无法识别了,扩展出来的三个USB接口正常。…...

剑指offer20_链表中环的入口节点
链表中环的入口节点 给定一个链表,若其中包含环,则输出环的入口节点。 若其中不包含环,则输出null。 数据范围 节点 val 值取值范围 [ 1 , 1000 ] [1,1000] [1,1000]。 节点 val 值各不相同。 链表长度 [ 0 , 500 ] [0,500] [0,500]。 …...
基于数字孪生的水厂可视化平台建设:架构与实践
分享大纲: 1、数字孪生水厂可视化平台建设背景 2、数字孪生水厂可视化平台建设架构 3、数字孪生水厂可视化平台建设成效 近几年,数字孪生水厂的建设开展的如火如荼。作为提升水厂管理效率、优化资源的调度手段,基于数字孪生的水厂可视化平台的…...

从零实现STL哈希容器:unordered_map/unordered_set封装详解
本篇文章是对C学习的STL哈希容器自主实现部分的学习分享 希望也能为你带来些帮助~ 那咱们废话不多说,直接开始吧! 一、源码结构分析 1. SGISTL30实现剖析 // hash_set核心结构 template <class Value, class HashFcn, ...> class hash_set {ty…...

【Zephyr 系列 10】实战项目:打造一个蓝牙传感器终端 + 网关系统(完整架构与全栈实现)
🧠关键词:Zephyr、BLE、终端、网关、广播、连接、传感器、数据采集、低功耗、系统集成 📌目标读者:希望基于 Zephyr 构建 BLE 系统架构、实现终端与网关协作、具备产品交付能力的开发者 📊篇幅字数:约 5200 字 ✨ 项目总览 在物联网实际项目中,**“终端 + 网关”**是…...

用docker来安装部署freeswitch记录
今天刚才测试一个callcenter的项目,所以尝试安装freeswitch 1、使用轩辕镜像 - 中国开发者首选的专业 Docker 镜像加速服务平台 编辑下面/etc/docker/daemon.json文件为 {"registry-mirrors": ["https://docker.xuanyuan.me"] }同时可以进入轩…...
JVM暂停(Stop-The-World,STW)的原因分类及对应排查方案
JVM暂停(Stop-The-World,STW)的完整原因分类及对应排查方案,结合JVM运行机制和常见故障场景整理而成: 一、GC相关暂停 1. 安全点(Safepoint)阻塞 现象:JVM暂停但无GC日志,日志显示No GCs detected。原因:JVM等待所有线程进入安全点(如…...

让回归模型不再被异常值“带跑偏“,MSE和Cauchy损失函数在噪声数据环境下的实战对比
在机器学习的回归分析中,损失函数的选择对模型性能具有决定性影响。均方误差(MSE)作为经典的损失函数,在处理干净数据时表现优异,但在面对包含异常值的噪声数据时,其对大误差的二次惩罚机制往往导致模型参数…...
Spring是如何解决Bean的循环依赖:三级缓存机制
1、什么是 Bean 的循环依赖 在 Spring框架中,Bean 的循环依赖是指多个 Bean 之间互相持有对方引用,形成闭环依赖关系的现象。 多个 Bean 的依赖关系构成环形链路,例如: 双向依赖:Bean A 依赖 Bean B,同时 Bean B 也依赖 Bean A(A↔B)。链条循环: Bean A → Bean…...