当前位置: 首页 > 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时间卷积长短期记忆神经网络时间序列预测…...

Win11桌面图标突然锁死?别慌,用这招绕过组策略编辑器直接搞定

Win11桌面图标突然锁死&#xff1f;三招绕过组策略编辑器直接解锁 刚泡好的咖啡还没喝一口&#xff0c;突然发现桌面图标全被"钉"在原地动弹不得——这种突如其来的系统抽风&#xff0c;恐怕是Windows用户最抓狂的体验之一。更糟的是&#xff0c;当你按照常规教程输入…...

【教育智能化临界点预警】:再不掌握AI Agent教学编排逻辑,3个月内将被首批智能助教替代

更多请点击&#xff1a; https://codechina.net 第一章&#xff1a;教育智能化临界点的本质判据与AI Agent不可逆替代趋势 教育智能化是否真正跨越临界点&#xff0c;不取决于技术参数的堆叠&#xff0c;而在于教学闭环中“决策权迁移”的可观测性——当AI Agent在备课、学情诊…...

固件逆向实战指南:从熵值分析到函数重建的七步法

1. 这不是“刷机教程”&#xff0c;而是一份固件逆向的实战切片很多人第一次听说“固件逆向”&#xff0c;脑子里浮现的是路由器刷OpenWrt、智能摄像头换壳跑Home Assistant&#xff0c;或者某款老式NAS突然不支持新硬盘&#xff0c;只好翻出U-Boot命令硬怼。这些确实是固件逆向…...

关于自指系统与算术障碍的跨领域猜想:一项探索性研究(世毫九实验室学术完善报告)

关于自指系统与算术障碍的跨领域猜想&#xff1a;一项探索性研究&#xff08;世毫九实验室学术完善报告&#xff09; 作者&#xff1a;方见华 单位&#xff1a;世毫九实验室 核心摘要 本报告针对世毫九实验室原创的探索性跨领域论文《关于自指系统与算术障碍的跨领域猜想&#…...

宏裕塑胶长玻纤RTP材料技术创新与应用实践

导读&#xff1a;在工程塑料领域&#xff0c;长玻纤增强热塑性材料&#xff08;LFRT&#xff09;正成为高端制造转型的核心驱动力。宏裕塑胶长玻纤RTP材料技术创新与应用实践&#xff0c;通过整合国际顶尖资源与自主改性技术&#xff0c;为汽车轻量化、新能源装备等场景提供高性…...

CANN算子开发调试实战:从“Segmentation Fault“到定位根因的完整流程

写Ascend C算子最怕的不是编译失败——编译失败有明确的错误信息。最怕的是运行时Segmentation Fault&#xff0c;什么都没告诉你&#xff0c;NPU直接挂了。没有堆栈、没有日志、只有一行"Killed"。 这篇整理了算子开发中常见的运行时错误、调试方法、以及定位根因的…...

Unity低耦合可复用交互系统设计与落地

1. 为什么“交互系统”在Unity项目里总被反复重写&#xff1f;我带过三支不同规模的Unity团队&#xff0c;从百人MMO到五人独立游戏&#xff0c;几乎每个项目都会在第3个月左右出现一个标志性场景&#xff1a;美术同学发来一段动画片段&#xff0c;说“这个门要点击打开”&…...

如何快速配置TQVaultAE:泰坦之旅玩家的终极装备管理与存档扩展指南

如何快速配置TQVaultAE&#xff1a;泰坦之旅玩家的终极装备管理与存档扩展指南 【免费下载链接】TQVaultAE Extra bank space for Titan Quest Anniversary Edition 项目地址: https://gitcode.com/gh_mirrors/tq/TQVaultAE TQVaultAE是《泰坦之旅周年版》玩家的开源装备…...

UE5官方文档(第一人称射击游戏教程)解读 第七章

好了&#xff0c;今天来到我们的第七章&#xff0c;今天将承上启下&#xff0c;延伸输入部分的工作。 配置角色移动 Coder 03 Configure Character Movement with C in Unreal Engine | Unreal Engine 5.7 Documentation | Epic Developer Community // Copyright Epic Games…...

AI写论文真给力!4款AI论文生成工具,开启高效论文写作模式!

AI论文写作工具评测 还在为撰写期刊论文、毕业论文或职称论文而感到烦恼吗&#xff1f;在人工写作的过程中&#xff0c;面对那海量的文献资料&#xff0c;犹如在茫茫大海中捞针&#xff0c;而那些繁琐的格式要求更是让我们无从下手&#xff0c;不断的修改反复消耗我们的耐心&a…...