AIX 系统编译Lzo和Lzop源码

LZO(Lempel Ziv Oberhumer)是致力于解压速度的一种数据压缩算法。
由于Hadoop Lzo实际上依赖C/C++开发的lzo去压缩。Java程序在使用Lzo压缩是通过JNI去调用gplcompression。
如果调取的版本不对会报 native-lzo library not available,这时就需要重新去编译 lzo2 及 gplcompression库文件。
具体的操作步骤如下:
1)下载Lzo、Lzop、hadoop-lzo-master源码包
其下载地址如下:
lzo、lzop:   http://www.lzop.org/
hadoop-lzo-master:


2)编译lzo-2.09.tar.gz
64位】
解压
$gzip -dc lzo-2.09.tar.gz | tar -xvf-



$cd lzo-2.09
CFLAGS='-maix64' CPPFLAGS='-maix64' CC='gcc' AR='ar -X64' configure --enable-static -enable-shared --prefix=/usr/local/hadoop/lzo-2.09



设置环境变量export OBJECT_MODE=64,若没有设置,则会报如下错误:
  CC       examples/dict.o
  CCLD     examples/dict
ld: 0711-317 ERROR: Undefined symbol: .__lzo_align_gap
ld: 0711-317 ERROR: Undefined symbol: .lzo1x_999_compress_level
ld: 0711-317 ERROR: Undefined symbol: .lzo1x_decompress_dict_safe
ld: 0711-317 ERROR: Undefined symbol: .lzo_memcmp
ld: 0711-317 ERROR: Undefined symbol: .lzo_version_string
ld: 0711-317 ERROR: Undefined symbol: .lzo_version_date
ld: 0711-317 ERROR: Undefined symbol: .__lzo_init_v2
ld: 0711-317 ERROR: Undefined symbol: .lzo_adler32
ld: 0711-345 Use the -bloadmap or -bnoquiet option to obtain more information.
collect2: error: ld returned 8 exit status
make: 1254-004 The error code from the last command is 1.


$make






$make install





安装完毕后,将/usr/local/hadoop/lzo-2.09/lib/*复制到 /usr/lib64/
cp /usr/local/hadoop/lzo-2.09/lib/* /usr/lib64



$cp src/.libs/liblzo2.so.2 /usr/lib64/liblzo2.so.2.0.0
$cd /usr/lib64
$ln -s liblzo2.so.2.0.0 liblzo2.so.2
$ln -s liblzo2.so.2.0.0 liblzo2.so



查看动态库的位数
$nm -X64 liblzo2.so.2.0.0 | wc -l
$nm -X32 liblzo2.so.2.0.0 | wc -l


显然是64位库文件。
配置环境变量(vim /etc/bashrc): export PATH=$PATH:/usr/local/hadoop/lzo-2.09

32位】
解压
$gzip -dc lzo-2.09.tar.gz | tar -xvf-
$cd lzo-2.09
$configure --enable-static -enable-shared --prefix=/usr/local/hadoop/lzo-2.09
$make
$make install
安装完毕后,将 /usr/local/hadoop/lzo-2.09/lib/* 复制到 /usr/lib/
cp /usr/local/hadoop/lzo-2.09/lib/* /usr/lib

3)编译lzop-1.03.tar.gz
64 位】
解压
$gzip -dc lzop-1.03.tar.gz | tar -xvf-



$cd lzop-1.03
$export C_INCLUDE_PATH=/usr/local/hadoop/lzo-2.09/include
PS: 如果不配置,则会报错
configure: error: LZO header files not found. Please check your installation or set the environment variable `CPPFLAGS'.

$CFLAGS='-maix64' CPPFLAGS='-maix64' CC='gcc' AR='ar -X64' configure --prefix=/usr/local/hadoop/lzop-1.03



$make





$make install


lzop链接到/usr/bin
$ln -s /usr/local/hadoop/lzop-1.03/bin/lzop  /usr/bin/lzop

以上步骤已经安装好 Lzop 压缩,
成功安装后可直接使用lzop命令对文件进行解压缩操作了。
压缩命令
$lzop 20150919.log
解压命令
$lzop -d -o decompress.log 20150919.log.lzo

32 位】
$gzip -dc lzop-1.03.tar.gz | tar -xvf-
$cd lzop-1.03
$export C_INCLUDE_PATH=/usr/local/hadoop/lzo-2.09/include
$configure --prefix=/usr/local/hadoop/lzop-1.03
$make
$make install
lzop 链接到 /usr/bin
$ln -s /usr/local/hadoop/lzop-1.03/bin/lzop  /usr/bin/lzop

4)编译hadoop-lzo-master.zip源码
由于仅需要动态库和静态库,故仅需要编译 C/C++ 部分。
$unzip hadoop-lzo-master.zip






$cd hadoop-lzo-master/src/main/native
$CFLAGS='-maix64' CPPFLAGS='-maix64' CC='gcc' AR='ar -X64' configure



$make



PS:执行make时出错,经过查看源码需要修改以下2点:
[1] 修改 Makefile
AM_CFLAGS = -g -Wall -fPIC -O2 -m$(JVM_DATA_MODEL)
修改为
AM_CFLAGS = -g -Wall -fPIC -O2 -maix64
[2] 修改 config.h
hadoop-lzo-master/src/main/native/impl/config.h 5 行的
#define HADOOP_LZO_LIBRARY
修改为
#define HADOOP_LZO_LIBRARY "/usr/lib64/liblzo2.so.2"

修改完成后重新执行make,即可



$make install




$cp .libs/libgplcompression.a /usr/lib64
$cp .libs/libgplcompression.la /usr/lib64
$cp .libs/libgplcompression.so.0 /usr/lib64/libgplcompression.so.0.0.0
$cd /usr/lib64
$ln -s libgplcompression.so.0.0.0 libgplcompression.so.0
$ln -s libgplcompression.so.0.0.0 libgplcompression.so
$nm -X64 libgplcompression.so.0.0.0 | wc -l
$nm -X32 libgplcompression.so.0.0.0 | wc -l



32 位】
$unzip hadoop-lzo-master.zip
$cd hadoop-lzo-master/src/main/native
$configure
$make
$make install
$cp .libs/libgplcompression.a /usr/lib
$cp .libs/libgplcompression.la /usr/lib
$cp .libs/libgplcompression.so.0 /usr/lib/libgplcompression.so.0.0.0
$cd /usr/lib
$ln -s libgplcompression.so.0.0.0 libgplcompression.so.0
$ln -s libgplcompression.so.0.0.0 libgplcompression.so


Author: wangyw

Company: ffcs

Date: 2015-11-08



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值