未だCentOS5を使っているといろいろと不都合が生じてきます。まず、最新のアプリケーションを使おうとすると、デフォルトで入っているライブラリ群が古く全くインストールできません。
今回はCentOS5.11にbzip2-1.0.6をインストールしてみます
ダウンロード
1 2 3 4 | $ cd /usr/local/src $ wget http://www.bzip.org/1.0.6/bzip2-1.0.6.tar.gz $ tar xzvfp bzip2-1.0.6.tar.gz $ cd bzip2-1.0.6 |
コンパイル
シェアードライブラリも同時にコンパイルします
まずは本体
1 2 | $ make # make install |
次にシェアードライブラリ
1 2 3 4 5 6 7 | $ make -f Makefile-libbz2_so $ make gcc -shared -Wl,-soname -Wl,libbz2.so.1.0 -o libbz2.so.1.0.6 blocksort.o huffman.o crctable.o randtable.o compress.o decompress.o bzlib.o /usr/bin/ld: blocksort.o: relocation R_X86_64_32 against `a local symbol' can not be used when making a shared object; recompile with -fPIC blocksort.o: could not read symbols: Bad value collect2: ld はステータス 1 で終了しました make: *** [all] エラー 1 |
ここでエラーが
解決方法
どうもfPICをつけてコンパイルしないとダメなようです
本体側も修正、Makefileを修正します
1 2 | CFLAGS=-Wall -Winline -O2 -g $(BIGFILES) -fPIC # -fPICを追加 CXXFLAGS=-fPIC # 行追加 |
コンパイル
1 2 3 | $ make clean $ make # make install |
次にシェアードライブラリ。Makefile-libbz2_soを修正
1 | CXXFLAGS=-fPIC # 行追加 |
コンパイル
1 2 | $ make -f Makefile-libbz2_so # mv libbz2.so.1.0* /usr/local/lib |