Chinaunix首页 | 论坛 | 博客
  • 博客访问: 8139700
  • 博文数量: 594
  • 博客积分: 13065
  • 博客等级: 上将
  • 技术积分: 10324
  • 用 户 组: 普通用户
  • 注册时间: 2008-03-26 16:44
个人简介

推荐: blog.csdn.net/aquester https://github.com/eyjian https://www.cnblogs.com/aquester http://blog.chinaunix.net/uid/20682147.html

文章分类

全部博文(594)

分类: C/C++

2012-11-06 17:32:40

在安装基于openssl-1.0.1c的thrift-0.9.0时,正常使用--with-openssl在configure时会出错,报“Error: libcrypto required.”错误,为解决这个错误,可以使用CPPFLAGS="-I$HOME/iflow/openssl/includeLDFLAGS="-ldl -L$HOME/iflow/openssl/lib"替代“--with-openssl”

经过上述操作后,编译时还会遇到::malloc未声明错误,这个时候需要修改config.h,一是在第一行加入#include ,二是注释掉#define malloc rpl_malloc一行

自动化脚本可以写成如下(前两行经测试可以不用):
sed -i -e 's!#define HAVE_MALLOC 0!#define HAVE_MALLOC 1!' config.h
sed -i -e 's!#define HAVE_REALLOC 0!#define HAVE_REALLOC 1!' config.h
sed -i -e 's!#define malloc rpl_malloc!/*#define malloc rpl_malloc*/!' config.h
sed -i -e 's!#define realloc rpl_realloc!/*#define realloc rpl_realloc*/!' config.h

注意
sed -i -e 's!#define HAVE_MALLOC 0!#define HAVE_MALLOC 1!' config.h
sed -i -e 's!#define HAVE_REALLOC 0!#define HAVE_REALLOC 1!' config.h
#include
只需要其中一个操作即可
阅读(9128) | 评论(4) | 转发(0) |
给主人留下些什么吧!~~

Aquester2017-08-17 11:40:00

./configure --prefix=/usr/local/thrift-0.9.0 --with-libevent=/usr/local/libevent --with-boost=/usr/local/boost CXXFLAGS=\"-I/usr/local/openssl/include\" LDFLAGS=\"-L/usr/local/openssl/lib\" --with-ruby=no --with-python=no --with-erlang=no --with-csharp=no --with-qt4=no --with-c_glib=no --with-perl=no --with-haskell=no --with-d=no --with-go=no

Aquester2017-02-08 14:30:22

Aquester:64位机器上编译,遇到如下链接错误,依赖的thrift为thrift-0.9.0:
/bin/ld: /usr/local/thrift/lib/libthrift.a(Thrift.o): relocation R_X86_64_32S against `_ZNSs4_Rep20_S_empty_rep_storageE\' can not be used when making a shared object; recompile with -fPIC
/usr/local/thrift/lib/libthrift.a: could not read symbols: 错误的值

解决办法:设置CXXFLAGS,加上-fPIC,重编译thrift,但注意不能是CPPFLAGS,如下所示
 ./configure --prefix=/usr/local/thrift-0.9.0 --with-boost=/usr/local/boost --with-libevent=/us

如下所示的链接错误,可采取同样的方法重编译protobuf,依赖的protobuf为protobuf-2.6.1
/bin/ld: /usr/local/protobuf/lib/libprotobuf.a(common.o): relocation R_X86_64_32S against `_ZTVN6google8protobuf7ClosureE\' can not be used when making a shared object; recompile with -fPIC
/usr/local/protobuf/lib/libprotobuf.a: could not read symbols: 错误的值

重编译protobuf:
./configure --prefix=/usr/local/protobuf-2.6.1 --with-zlib CXXFLAGS=\"-fPIC\"
注意configure后要做下make cle

回复 | 举报

Aquester2017-02-08 14:27:33

64位机器上编译,遇到如下链接错误,依赖的thrift为thrift-0.9.0:
/bin/ld: /usr/local/thrift/lib/libthrift.a(Thrift.o): relocation R_X86_64_32S against `_ZNSs4_Rep20_S_empty_rep_storageE\' can not be used when making a shared object; recompile with -fPIC
/usr/local/thrift/lib/libthrift.a: could not read symbols: 错误的值

解决办法:设置CXXFLAGS,加上-fPIC,重编译thrift,但注意不能是CPPFLAGS,如下所示
 ./configure --prefix=/usr/local/thrift-0.9.0 --with-boost=/usr/local/boost --with-libevent=/us

Aquester2016-09-23 11:44:00

编译openssl:./config --prefix=/usr/local/thirdparty/openssl-1.0.2i shared threads