gpt4 book ai didi

c - ZooKeeper C 绑定(bind)安装

转载 作者:行者123 更新时间:2023-11-30 16:30:18 24 4
gpt4 key购买 nike

我正在尝试安装 ZooKeeper 的 C 绑定(bind),同时使用构建系统 ssh 到另一台计算机:i386-pc-solaris2.11(我不知道这是否重要)。无论如何,我通过 ssh 连接到的计算机正在运行基于 Linux 的操作系统。

我在命令行中运行了以下代码:

cd ../zookeeper
cd src
cd c
./configure
make

上面的终端输入取自 Apache 网站,用于设置 C shell 客户端。我收到的错误代码源自 make:

libtool: link: ( cd ".libs" && rm -f "libzookeeper_mt.la" && ln -s 
"../libzookeeper_mt.la" "libzookeeper_mt.la" )
gcc -DHAVE_CONFIG_H -I. -I./include -I./tests -I./generated -
D_POSIX_PTHREAD_SEMANTICS -Wall -Werror -g -O2 -D_GNU_SOURCE -MT cli.o
-MD -MP -MF .deps/cli.Tpo -c -o cli.o `test -f 'src/cli.c' || echo
'./'`src/cli.c
mv -f .deps/cli.Tpo .deps/cli.Po
/bin/sh ./libtool --tag=CC --mode=link gcc -Wall -Werror -g -O2 -
D_GNU_SOURCE -o cli_st cli.o libzookeeper_st.la
libtool: link: gcc -Wall -Werror -g -O2 -D_GNU_SOURCE -o .libs/cli_st
cli.o ./.libs/libzookeeper_st.so -lnsl -lsocket -lm -R/usr/local/lib
gcc -DHAVE_CONFIG_H -I. -I./include -I./tests -I./generated -
D_POSIX_PTHREAD_SEMANTICS -DTHREADED -g -O2 -D_GNU_SOURCE -MT cli_mt-
cli.o -MD -MP -MF .deps/cli_mt-cli.Tpo -c -o cli_mt-cli.o `test -f
'src/cli.c' || echo './'`src/cli.c
mv -f .deps/cli_mt-cli.Tpo .deps/cli_mt-cli.Po
/bin/sh ./libtool --tag=CC --mode=link gcc -DTHREADED -g -O2 -
D_GNU_SOURCE -o cli_mt cli_mt-cli.o libzookeeper_mt.la
libtool: link: gcc -DTHREADED -g -O2 -D_GNU_SOURCE -o .libs/cli_mt
cli_mt-cli.o ./.libs/libzookeeper_mt.so -lnsl -lsocket -lm -lpthread -
R/usr/local/lib
Undefined first referenced
symbol in file
__ .sync_fetch_and_add ./.libs/libzookeeper_mt.so
ld: fatal: symbol referencing errors. No output written to .libs/cli_mt
collect2: ld returned 1 exit status
*** Error code 1
make: Fatal error: Command failed for target `cli_mt'
Current working directory
/workspace/kunalp/mysource/usr/src/kunalp/zookeeperC2/src/c
*** Error code 1
make: Fatal error: Command failed for target `all'

cli_mt:localhost:2181 不起作用,因为 ZooKeeper 库未安装在/usr/local/lib 中。不过,我确实有 Zookeeper 在我本地计算机上的 C 客户端中工作,我只需要它在这个系统上工作。

请帮忙,这只是在linux计算机上安装zookeeper。我不太了解 linux,也不了解这个 makefile 给我的错误代码。

编辑:我发现我没有权限更改此服务器上的/usrs/local/lib 目录。我试过了

distclean && ./configure --prefix=/workspace/kunalp/zookeeper/ --libdir=/workspace/kunalp/zookeeper/lib && make install

重新定位库目录。然而,这并没有解决问题,给了我以下错误:

/bin/sh ./libtool  --tag=CC    --mode=link gcc -DTHREADED -g -O2 -
D_GNU_SOURCE -o cli_mt cli_mt-cli.o libzookeeper_mt.la
libtool: link: gcc -DTHREADED -g -O2 -D_GNU_SOURCE -o .libs/cli_mt
cli_mt-cli.o ./.libs/libzookeeper_mt.so -lnsl -lsocket -lm -lpthread -
R/workspace/kunalp/zookeeper/lib
Undefined first referenced
symbol in file
__sync_fetch_and_add ./.libs/libzookeeper_mt.so
ld: fatal: symbol referencing errors. No output written to .libs/cli_mt
collect2: ld returned 1 exit status
*** Error code 1
make: Fatal error: Command failed for target `cli_mt'

谢谢

最佳答案

Solaris 编译器没有 __sync_fetch_and_add。为了解决这个问题,我必须在 Solaris 编译器中找到一个等效函数:atomic_add(),并在 mt_adaptor.c 中将 __sync_fetch_and_add 替换为atomic_add()。这修复了我的 make 命令

关于c - ZooKeeper C 绑定(bind)安装,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51255329/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com