当前位置: 首页 > news >正文

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 根据键判断值

最原始的写法&#xff1a; 改进后的写法&#xff1a; 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年开始火了以后&#xff0c;2014年左右当时有幸在学校能和学院教授一起做些项目以及学习。其中docker技术在当时来说还算是比较新的技术&#xff0c;国内关于这块的资料以及使用也才刚刚开始&#xff0c;讨论docker技术&#xff0c;算是相对时髦的…...

sql:SQL优化知识点记录(九)

&#xff08;1&#xff09;小表驱动大表 对sql调优的分析&#xff1a; 排序优化&#xff1a; 数据库的连接方式&#xff0c;里面的数据尽量这样连接&#xff0c;尽量选择第一个方式&#xff0c;因为两个表的连接一共建立5次连接&#xff0c;第二个建立1000次连接&#xff0c;从…...

【PowerQuery】PowerQuery导入JSON数据

Json数据是目前使用的最为频繁和广泛的一种数据交换格式,JSON的全称为JavaScript Object Notation。Json 主要用于在互联网的消息的数据交换信息传递,他的格式与XML有什么区别呢?为什么不用XML,用Json有啥好处呢?我们接下来讨论下Json相比XML的优势: XML传递的数据过多服…...

bootstrap 主题

颜色值 根据等级 primarysecondarysuccessinfowarningdangerlightdark 根据名字 blackwhiteblueindigopurplepinkredorangeyellowgreentealcyangraygray-darkbrown 好像是self 加的 根据颜色值的转化 var 变量 –bs-**** 比如&#xff1a;–bs-blue&#xff0c;–bs-pri…...

FPGA 学习笔记:Vivado 工程管理技巧

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

Java低代码开发:jvs-list(列表引擎)功能(二)字段及样式配置

字段的增减 进入列表页设计器-页表设计界面&#xff0c;点击新增一行、或者删除按钮&#xff0c;可以对字段进行增减操作&#xff0c;如果对于权限的列表页&#xff0c;可以使用批量创建字段的按钮&#xff1a; 字段的批量设置&#xff0c;点击批量添加如下图所示 字段为中文名…...

【Java】线程都有哪几种状态

文章目录 前言传统线程模型&#xff08;操作系统&#xff09;中线程状态Java线程中的状态线程的运行流程 前言 首先我们要知道&#xff0c;在传统&#xff08;操作系统&#xff09;的线程模型中线程被分为五种状态&#xff0c;在java线程中&#xff0c;线程被分为六种状态。 …...

为什么服务端会有那么多的 TimeWait ?

工作中无论是开发环境还是线上环境&#xff0c;我们都出现过大量的 timewait 状态的连接&#xff0c;例如下面这个例子 服务端简单的开辟一个 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 过…...

目前的一些关于机器学习的感悟

目前的一些关于机器学习的想法 大家一直都在说深度学习和积极学习&#xff0c;当我在本科的时候&#xff0c;就听到很多关于这方面的东西&#xff0c;但当时自己对于这些东西的概念较为模糊&#xff0c;随着研究生进一步的学习&#xff0c;我想讲一下&#xff0c;到目前我所理…...

salesforce从sandbox部署到生产环境的自定义字段权限没有成功上载

salesforce从sandbox部署到生产环境的自定义字段权限没有成功上载 只将字段名称和类型上载了。 查阅&#xff1a; https://help.salesforce.com/s/articleView?idsf.deploy_special_behavior.htm&type5 显示&#xff1a; 自定义字段 从 API 版本 30.0 开始&#xff0c;…...

字节跳动推出AI对话工具“豆包”:免费用

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

时序预测 | MATLAB实现TCN-LSTM时间卷积长短期记忆神经网络时间序列预测

时序预测 | MATLAB实现TCN-LSTM时间卷积长短期记忆神经网络时间序列预测 目录 时序预测 | MATLAB实现TCN-LSTM时间卷积长短期记忆神经网络时间序列预测预测效果基本介绍模型描述程序设计参考资料 预测效果 基本介绍 1.MATLAB实现TCN-LSTM时间卷积长短期记忆神经网络时间序列预测…...

代码随想录训练营二刷第十五天 | 层序遍历10道 226.翻转二叉树 101.对称二叉树 2

代码随想录训练营二刷第十五天 | 层序遍历10道 226.翻转二叉树 101.对称二叉树 2 一、102. 二叉树的层序遍历 题目链接&#xff1a;https://leetcode.cn/problems/binary-tree-level-order-traversal/ 思路&#xff1a;两次while&#xff0c;内层控制每一行的数量&#xff0c…...

nowcoder NC10 大数乘法

题目链接&#xff1a; https://www.nowcoder.com/practice/c4c488d4d40d4c4e9824c3650f7d5571?tpId196&tqId37177&rp1&ru/exam/company&qru/exam/company&sourceUrl%2Fexam%2Fcompany&difficultyundefined&judgeStatusundefined&tags&tit…...

非科班菜鸡算法学习记录 | 代码随想录算法训练营第58天|| 单调栈! 739. 每日温度 496.下一个更大元素 I

739. 每日温度 输入一个数组&#xff0c;找比i天温度高的第一天 知识点&#xff1a;单调栈 状态&#xff1a;看思路自己写 思路&#xff1a; 看自己写的注释&#xff0c;维护一个单调栈 // 版本一 class Solution { public:vector<int> dailyTemperatures(vector<…...

【Luogu】 P5445 [APIO2019] 路灯

题目链接 点击打开链接 题目解法 转化很妙 考虑关路灯 x x x 的操作 令左边第一个未关的路灯为 L L L&#xff0c;右边第一个未关的路灯为 R R R&#xff0c;那么这一次会影响的区间即为 l ∈ [ L 1 , x ] , r ∈ [ x , R − 1 ] l\in[L1,x],\;r\in[x,R-1] l∈[L1,x],…...

Kafka3.0.0版本——消费者(独立消费者消费某一个主题中某个分区数据案例__订阅分区)

目录 一、独立消费者消费某一个主题中某个分区数据案例1.1、案例需求1.2、案例代码1.3、测试 一、独立消费者消费某一个主题中某个分区数据案例 1.1、案例需求 创建一个独立消费者&#xff0c;消费firstTopic主题 0 号分区的数据&#xff0c;所下图所示&#xff1a; 1.2、案…...

基于Simulink的用于电力系统动态分析

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…...

日200亿次调用,喜马拉雅网关的架构设计

说在前面 在40岁老架构师 尼恩的读者社区(50)中&#xff0c;很多小伙伴拿到一线互联网企业如阿里、网易、有赞、希音、百度、滴滴的面试资格。 最近&#xff0c;尼恩指导一个小伙伴简历&#xff0c;写了一个《API网关项目》&#xff0c;此项目帮这个小伙拿到 字节/阿里/微博/…...

构造函数和析构函数(个人学习笔记黑马学习)

构造函数:主要作用在于创建对象时为对象的成员属性赋值&#xff0c;构造函数由编译器自动调用&#xff0c;无须手动调用。析构函数:主要作用在于对象销毁前系统自动调用&#xff0c;执行一些清理工作。 #include <iostream> using namespace std;//对象初始化和清理class…...

GPT引领前沿与应用突破之GPT4科研实践技术与AI绘图教程

详情点击链接&#xff1a;GPT引领前沿与应用突破之GPT4科研实践技术与AI绘图教程 前沿 GPT对于每个科研人员已经成为不可或缺的辅助工具&#xff0c;不同的研究领域和项目具有不同的需求。 如在科研编程、绘图领域&#xff1a; 1、编程建议和示例代码: 无论你使用的编程语言是…...

Git上传新项目

第一步&#xff1a;初始化 Git 仓库 首先&#xff0c;打开终端或命令行界面&#xff0c;然后导航到项目目录。运行下面的命令来初始化一个新的 Git 仓库&#xff1a; git init这将创建一个新的 .git 子目录&#xff0c;其中包含了初始化的 Git 仓库。 第二步&#xff1a;添加…...

做第一个php网站/热狗seo顾问

周次 学习时间 新编写代码行数 博客量&#xff08;篇&#xff09; 学到知识点 本周 5 80(HTML的不知道算不算) 1 JAVA基础&#xff0c;网络基础的静态路由配置&#xff0c; XX XXX XXXX XXXX 转载于:https://www…...

精神文明建设委员会网站/关键词排名查询工具

state 和 props 主要的区别&#xff1a; 在于 props 是不可变的&#xff0c;而 state 可以根据与用户交互来改变。 组件需要定义 state 来更新和修改数据&#xff0c;子组件只能通过 props 来传递数据。 1.如何在组件中使用 props&#xff1a; <body> <div id&quo…...

只买域名可以做自己的网站嘛/友链交换不限内容

首先&#xff0c;需要回到最原始的地震矩的表达式&#xff1a; 已知strike,dip,rake 根据strike和dip可以求出v,根据strike,dip,rake,可以求出u。 把求出来的v和u互换&#xff0c;相当于原来的位错矢量变成法向量&#xff0c;而法向量知道了&#xff0c;面也就知道了&#xff0…...

建设网站网页/网站seo的主要优化内容

Stalker原理分析 简介原理核心原理难点&解决思路如何Trace使用参考简介 Stalker 是Frida的代码跟踪引擎。它允许跟踪线程,捕获每个函数、每个块,甚至是执行的每条指令。显然,Stalker底层实现在某种程度上是依赖于架构的,尽管它们之间有很多共同点。Stalker目前支持运行…...

新开传奇网站单职业/推广平台排行榜app

一、NDK中获取android设备ID的方式Java代码如下(获取设备ANDROID_ID)&#xff1a;final String androidId Secure.getString(context.getContentResolver(), Secure.ANDROID_ID);对应的c代码(相当蛋疼)&#xff0c;注意如果是C&#xff0c;需要把所有的(*env)->替换成env-&…...

同企网站建设做网站/百度推广的费用

http://www.yiichina.com/video 转载于:https://www.cnblogs.com/shanyongchen/p/6585733.html...