Protobuf2.5.0在PowerLinux平台编译问题解决方法
来源:互联网 发布:otc机器人详细编程 编辑:程序博客网 时间:2024/06/06 00:34
Hadoop目前在各种平台广泛使用,Protobuf作为Hadoop编译的前提条件,在PowerLinux平台上面编译时,会出现报错,无法编译通过。
具体解决方案如下:
1. 下载protobuf源代码包protobuf-2.5.0.tar.bz2并解压
tar -jxf protobuf-2.5.0.tar.bz2
cd protobuf-2.5.0
2. cd src/google/protobuf/stubs/
cp atomicops_internals_x86_gcc.cc atomicops_internals_x86_gcc.cc.old
touch atomicops_internals_x86_gcc.cc
cp atomicops_internals_x86_gcc.h atomicops_internals_x86_gcc.h.old
cp ~/atomicops_internals_x86_gcc.h ./
3. 编辑platform_macros.h
vi platform_macros.h
把
#error Host architecture was not detected as supported by protobuf
注释掉
//#error Host architecture was not detected as supported by protobuf
4. 编辑atomicops.h
vi atomicops.h
在文件顶部加
#define GOOGLE_PROTOBUF_ARCH_64_BIT
把
#elif defined(__GNUC__)
#if defined(GOOGLE_PROTOBUF_ARCH_IA32) || defined(GOOGLE_PROTOBUF_ARCH_X64)
#include <google/protobuf/stubs/atomicops_internals_x86_gcc.h>
#elif defined(GOOGLE_PROTOBUF_ARCH_ARM)
#include <google/protobuf/stubs/atomicops_internals_arm_gcc.h>
#elif defined(GOOGLE_PROTOBUF_ARCH_ARM_QNX)
#include <google/protobuf/stubs/atomicops_internals_arm_qnx.h>
#elif defined(GOOGLE_PROTOBUF_ARCH_MIPS)
#include <google/protobuf/stubs/atomicops_internals_mips_gcc.h>
#elif defined(__pnacl__)
#include <google/protobuf/stubs/atomicops_internals_pnacl.h>
#else
GOOGLE_PROTOBUF_ATOMICOPS_ERROR
#endif
改为
#elif defined(__GNUC__)
#if defined(GOOGLE_PROTOBUF_ARCH_IA32) || defined(GOOGLE_PROTOBUF_ARCH_X64)
#include <google/protobuf/stubs/atomicops_internals_x86_gcc.h>
#elif defined(GOOGLE_PROTOBUF_ARCH_ARM)
#include <google/protobuf/stubs/atomicops_internals_arm_gcc.h>
#elif defined(GOOGLE_PROTOBUF_ARCH_ARM_QNX)
#include <google/protobuf/stubs/atomicops_internals_arm_qnx.h>
#elif defined(GOOGLE_PROTOBUF_ARCH_MIPS)
#include <google/protobuf/stubs/atomicops_internals_mips_gcc.h>
#elif defined(__pnacl__)
#include <google/protobuf/stubs/atomicops_internals_pnacl.h>
#else
//GOOGLE_PROTOBUF_ATOMICOPS_ERROR
#include <google/protobuf/stubs/atomicops_internals_x86_gcc.h>
#endif
4. 编译protobuf
#cd ~/protobuf-2.5.0
#./configure --prefix=/usr/local
#make -j4
#make install
5. 验证ProtoBuf是否编译成功
#protoc --version
libprotoc 2.5.0
- Protobuf2.5.0在PowerLinux平台编译问题解决方法
- 交叉编译 protobuf2.4 库 实现在arm平台上使用
- protobuf2.7.0在RedHat6.4下编译问题
- Hbase在PowerLinux平台异常:libjffi-1.0.so包不存在的解决方法
- exosip在vs2008下编译问题解决方法
- linuxmint18上cocos2dx protobuf2.6.1编译、使用方法
- 《在MFC中使用OpenCV》例程编译问题解决方法
- 在SDK中使用GDI+出现的编译问题解决方法
- qt编译问题解决方法
- Protobuf2和Protobuf3自动生成代码方法
- OSIP在NT平台下正确的编译方法
- ffmpeg在Windows平台上的编译方法
- Protobuf2.6集成到cocos2dx(Android和ios平台)
- cocos2dx 在Vs2010编译问题解决
- linux内核编译问题解决方法
- threshold工具编译问题解决方法
- Android ndk 编译问题解决方法
- snmp++编译错误问题解决方法
- 如何远程连接IBM Integration Node
- Android--LayoutInflater详解
- Android Application对象必须掌握的七点
- 分布式消息系统Kafka初步<转>
- ArcGIS教程:按照固定路径进行三维飞行
- Protobuf2.5.0在PowerLinux平台编译问题解决方法
- JAVA Static方法与单例模式的理解
- Opencv2.4.9源码分析——MSER
- [LeetCode] Remove Element
- 航班查询接口
- 新手报到
- php数组函数(用到的就记录下)
- qt 之 How to Change the Background Color of QWidget
- 使用Struts2和Tomcat实现文件上传到Hadoop