交叉编译zookeeper的C库
原创文章,转载请正确注明本文原始URL及作者。
今天要编译一个zookeeper的C接口,要编译一个TK1版本。
事情经过这这样的:
原来用的是zookeeper-3.4.6版本,但是源码中有个函数是汇编代码,指令不兼容,编译不过。
这里折腾了好久,还准备读懂代码写个C代码替换,结果官方已经修改了这个问题了。
下载了源码包 zookeeper-trunk.zip
里面没有configure,需要生成configure ,按照README和INSTALL来做。
这里折腾了好久,又是需要ant,又是需要autoreconf的,而且TK1上还没有这些工具,在PC上也总有错。
有到网上找了个版本
zookeeper-3.5.1-alpha.tar.gz
里面带有configure,哈哈,好用,直接放到TK1板子上编译出了 libzookeeper_mt 。
看来trunk上的代码需要大神才能编译啊,没有带configure,需要autoconf,一般人不会用。
然后把 libzookeeper_mt 考到我的交叉编译的虚拟机上,编译我的mq,结果报错:
Linking CXX executable ../bin/linux_arm_tk1/testor
/usr/lib/gcc/arm-linux-gnueabihf/4.6/../../../../arm-linux-gnueabihf/bin/ld: warning: ld-linux.so.3, needed by /usr/lib/gcc/arm-linux-gnueabihf/4.6/libstdc++.so, not found (try using -rpath or -rpath-link)
/home/xxx...xxx/libzookeeper_mt.so: undefined reference to `__poll_chk@GLIBC_2.16'
collect2: ld 返回 1
是因为 libzookeeper_mt 从TK1板子上编译,而现在我从虚拟机编译依赖这个库,估计是版本问题。
在TK1上用make编译是可以的,但我们的工程是cmake组织的,编译都是用的虚拟机,看来还是需要从虚拟机重新编译个 libzookeeper_mt 。
从虚拟机交叉编译zookeeper
./configure --host=arm-linux-gnueabihf
报错:
checking that generated files are newer than configure... done
configure: creating ./config.status
./config.status: line 2300: syntax error: unexpected end of file
这个错误真是太奇怪了,每次自动生成这个文件,还生成的有错。
最后无怒了,不用它生成了,我自己从命令行编译吧。
最后是这样解决了问题:
在TK1上有编译一遍,复制出编译过程中的编译选项。
找到TK1生成的静态库,把.o列表显示出来。
然后自己在虚拟机中写脚本,按照它的编译选项编译.o对应的源码,终于可以用了!
原创文章,转载请正确注明本文原始URL及作者。
交叉编译zookeeper的C库的更多相关文章
- Linux学习笔记——怎样在交叉编译时使用共享库
0.前言 在较为复杂的项目中会利用到交叉编译得到的共享库(*.so文件).在这样的情况下便会产生下面疑问,比如: [1]交叉编译时的共享库是否须要放置于目标板中,假设须要放置在哪个文件 ...
- 交叉编译多平台 FFmpeg 库并提取视频帧
原文地址: 交叉编译多平台 FFmpeg 库并提取视频帧 交叉编译多平台 FFmpeg 库并提取视频帧 本文档适用于 x86 平台编译 armeabi.armeabi-v7a.arm64-v8a.x8 ...
- 交叉编译多平台 FFmpeg 库并提取视频帧(转)
交叉编译多平台 FFmpeg 库并提取视频帧 转 https://www.cnblogs.com/leviatan/p/11142579.html 本文档适用于 x86 平台编译 armeabi.a ...
- C/C++ 跨平台交叉编译、静态库/动态库编译、MinGW、Cygwin、CodeBlocks使用原理及链接参数选项
目录 . 引言 . 交叉编译 . Cygwin简介 . 静态库编译及使用 . 动态库编译及使用 . MinGW简介 . CodeBlocks简介 0. 引言 UNIX是一个注册商标,是要满足一大堆条件 ...
- Linux学习笔记——如何使用共享库交叉编译
0.前言 在较为复杂的项目中会利用到交叉编译得到的共享库(*.so文件).在这样的情况下便会产生下面疑问,比如: [1]交叉编译时的共享库是否须要放置于目标板中,假设须要放置在哪个文件 ...
- 基于ZooKeeper的分布式锁和队列
在分布式系统中,往往需要一些分布式同步原语来做一些协同工作,上一篇文章介绍了Zookeeper的基本原理,本文介绍下基于Zookeeper的Lock和Queue的实现,主要代码都来自Zookeeper ...
- ZooKeeper开发手册中文翻译(转)
本文Github地址:https://github.com/sundiontheway/zookeeper-guide-cn 本文假设你已经具有一定分布式计算的基础知识.你将在第一部分看到以下内容: ...
- NeuSoft(1)构建嵌入式交叉编译环境
操作系统版本:ubuntu 12.04 内核名称:Linux 内核发行版:3.2.0-generic 内核版本:#50-Ubuntu SMP Mon Sep 12 21:18:14 UTC 2011 ...
- ZooKeeper学习第六期---ZooKeeper机制架构
一.ZooKeeper权限管理机制 1.1 权限管理ACL(Access Control List) ZooKeeper 的权限管理亦即ACL 控制功能,使用ACL来对Znode进行访问控制.ACL的 ...
随机推荐
- VS2012 创建的entityframework 4.1版本
起因:部署网站提示错误“Method not found: 'Void System.Data.Objects.ObjectContextOptions.set_UseConsistentNullRe ...
- console.log()换行和document.write()换行
<!DOCTYPE html><html ><head><meta charset="utf-8"><title>ddd ...
- 修改ECSHOP的小数点保留位数
客户站点http://carfa.hk79.2ifree.com 原来的程序直接取整了,现在做下面修改. 首先打开文件 /carfa/web/includes/lib_common.php 第一步:在 ...
- openstack云主机硬盘复制查询
假定客户在自己的电脑上创建文件后 #宿主机查看客户使用的是哪个磁盘 [root@compute1 ~]# lvs LV VG Attr LSize Pool Origin Data% Meta ...
- [UE4]用Blenspace混合空间动画代替AimOffset动画偏移
- Android 按下home键,程序在后台运行,在设置中点击程序的启动时,会再次打开启动页的解决办法
在onCreate()方法中增加如下代码即可: if (!isTaskRoot()) { finish(); return; }
- SCCM 2012 R2实战系列之十三:辅助站点部署
由于最近几个月一直处于AD升级项目中,很久没有更新SCCM的技术文档了.SCCM 2012中的辅助站点部署方法还是比较特别的,需要注意的地方也非常多,今天跟大家分享辅助站点的具体部署和配置方法. 1. ...
- 如何使用webpack打包项目
webpack是前端开发中比较常用的打包工具之一,另外还有gulp,grunt.之前没有涉及过打包这块,这里介绍一下使用webpack打包的流程. Grunt和Gulp的工作方式是:在一个配置文件中, ...
- (转).Net高级进阶,在复杂的业务逻辑下,如何以最简练的代码,最直观的编写事务代码?
原文地址:http://www.cnblogs.com/1996V/p/7798111.html 示例一和示例二,主要是来讲解 TransactionScope 是什么,为什么要用Transactio ...
- OpenGL中移动单位中的‘单位’指什么
opengl 比如 用到glm::translate(x,y,z) 表示 移动x,y,z个单位, 那么这个这个单位是指什么呢?这里的单位不是指像素,是根据投影矩阵的变化而变化的,默认情况下投影矩阵Pr ...