论坛
潜水/灌水快乐,沉淀知识,认识更多同行。
ToB圈子
加入IT圈,遇到更多同好之人。
朋友圈
看朋友圈动态,了解ToB世界。
ToB门户
了解全球最新的ToB事件
博客
Blog
排行榜
Ranklist
文库
业界最专业的IT文库,上传资料也可以赚钱
下载
分享
Share
导读
Guide
相册
Album
记录
Doing
应用中心
搜索
本版
文章
帖子
ToB圈子
用户
免费入驻
产品入驻
解决方案入驻
公司入驻
案例入驻
登录
·
注册
只需一步,快速开始
账号登录
立即注册
找回密码
用户名
Email
自动登录
找回密码
密码
登录
立即注册
首页
找靠谱产品
找解决方案
找靠谱公司
找案例
找对的人
专家智库
悬赏任务
圈子
SAAS
IT评测·应用市场-qidao123.com技术社区
»
论坛
›
数据库
›
SQL-Server
›
【undefined reference to xxx】zookeeper库编译和安装 ...
【undefined reference to xxx】zookeeper库编译和安装 / sylar项目ubuntu2 ...
半亩花草
论坛元老
|
2024-10-27 11:28:43
|
来自手机
|
显示全部楼层
|
阅读模式
楼主
主题
1748
|
帖子
1748
|
积分
5244
最近学习sylar项目,编译项目时遇到链接库不匹配的问题,记录下自己解决问题过程,虽然过程很艰巨,但照旧解决了,以下内容供大家参考!
undefined reference to ``问题分析
项目编译报错
/usr/bin/ld: ../lib/libsylar.so: undefined reference to `ZOO_READONLY_STATE'
/usr/bin/ld: ../lib/libsylar.so: undefined reference to `zookeeper_init2'
/usr/bin/ld: ../lib/libsylar.so: undefined reference to `zoo_set_servers'
/usr/bin/ld: ../lib/libsylar.so: undefined reference to `ZOO_NOTCONNECTED_STATE'
/usr/bin/ld: ../lib/libsylar.so: undefined reference to `zoo_get_current_server'
/usr/bin/ld: ../lib/libsylar.so: undefined reference to `ZOO_CONTAINER'
复制代码
应该是链接到的库文件中不含这些字符,因为之前是sudo apt-get install libzookeeper-dev安装的,版本较久(3.4.13),我也看了它的头文件源码,确实没有这些定义变量和函数;(注意这里的我看的是zookeeper.h头文件,而libzookeeper_mt.so文件是安装编译时产生的,因此两个文件内容是一致的;下面讲下怎样通过二进制文件libzookeeper_mt.so来查看是否包含某种字符)
查看验证libzookeeper_mt.so链接文件是否包含对应的字符
find / -name libzookeeper_mt.so 在/usr/lib/libzookeeper_mt.so
定位找到了链接文件;
nm -D libzookeeper_mt.so | grep ZOO_READONLY_STATE
查看这个二进制文件中的可显示字符是否有报错的字符,发现并没有,可以确定当前系统安装库的zookeeper版本简直没有对应变量和函数定义,那么就需要安装新的版本库;
编译安装zookeeper
我之前通过apt安装的,并且查看了下里面源库中没有更新的版本,因此只能下载库安装包,手动编译安装;
zookeeper下载地址 https://dlcdn.apache.org/zookeeper/
下载安装包后,可以查看README_packaging.md,里面具体讲解了怎样构建和安装这个库,并且指出最终天生的链接文件路径;具体操作如下:
依赖软件包安装命令
RHEL系统:
yum install cppunit
yum install python-setuptools
yum install openssl openssl-devel
yum install cyrus-sasl-md5 cyrus-sasl-gssapi cyrus-sasl-devel
复制代码
Ubuntu系统(适用于 16.04+):
复制代码
apt-get install libcppunit-dev
apt-get install python-setuptools python2.7-dev
apt-get install openssl libssl-dev
apt-get install libsasl2-modules-gssapi-mit libsasl2-modules libsasl2-dev
复制代码
使用 Maven (没有指令的话需要安装)构建包:以下命令将清算所有内容并构建 tarball 包,同时跳过测试:
mvn clean install -DskipTests
复制代码
构建 C 客户端,需要激活 full-build 设置文件:
mvn clean -Pfull-build
mvn install -Pfull-build -DskipTests
复制代码
编译后文件位置
- 用户可执行文件在 `zookeeper-client/zookeeper-client-c/target/c/bin`。
- 原生库在 `zookeeper-client/zookeeper-client-c/target/c/lib`。 // 我们所需的链接文件路径
- 原生库头文件在 `zookeeper-client/zookeeper-client-c/target/c/include/zookeeper`。
复制代码
如果构建安装顺遂的话,就可以看到乐成显示;
下述就是需要的链接文件,然后将对应的文件复制到/usr/lib/ 或者 /usr/local/lib/下,包管系统编译器可以找到;
构建时如果报错,比方需要添加JAVA_HOME环境变量,在~/.bashrc文件中添加,自己安装JAVA的jdk路径即可;
具体操作见:https://blog.csdn.net/weixin_50570038/article/details/143256298
末了查抄下是否乐成
此时发现可以找到ZOO_READONLY_STATE字符变量,完结!!
通过以上操作,可以解决编译项目过程中,遇到链接文件大概由于版本不支持导致无法乐成编译的问题;
反正遇到问题不要怕,一步步分析、解决,这个过程也可以深入理解linux系统下的编译过程(虽然我花了两天才解决这个问题)
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
本帖子中包含更多资源
您需要
登录
才可以下载或查看,没有账号?
立即注册
x
回复
使用道具
举报
0 个回复
正序浏览
返回列表
快速回复
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
or
立即注册
本版积分规则
发表回复
回帖并转播
发新帖
回复
半亩花草
论坛元老
这个人很懒什么都没写!
楼主热帖
YOLOV5 代码复现以及搭载服务器运行 ...
本周涨粉一倍,我决定再开源一个商超管 ...
APP性能优化
Java集合框架(五)-Collections 和 泛型 ...
安装Python
Spring5——JdbcTemplate笔记
经典Python题目:一个列表或者数组去重 ...
《C++性能优化指南》 linux版代码及原 ...
【Redis】BigKey问题
随机数漫谈
标签云
集成商
AI
运维
CIO
存储
服务器
浏览过的版块
IOS
登录参与点评抽奖加入IT实名职场社区
下次自动登录
忘记密码?点此找回!
登陆
新用户注册
用其它账号登录:
关闭
快速回复
返回顶部
返回列表