個別のプログラムをビルドしよう! --
あまりない状況だと思いますが、CCP4の一部のプログラムをビルドしたくなるときがあります。
もちろんCCP4のソースを取得してビルドすれば可能ですが、プログラムによっては結構大変です。(ちょっと古い情報ですがCCP4/Advancedインストールに過去の試行錯誤をまとめてあります)。
ここでは、CCP4の中核のプログラムのビルドについてまとめておきます。ちょっとこのプログラムだけをビルドしたい、というときに便利かも。clipperとかcctbxを使うプログラムはここでは取り上げません(結構大変なので)。
aptでインストール
- lapack-devel
- glibc-static -- staticビルドをしたいとき
- lapack-static
ファイルの展開およびconfigure
CCP4のFTPサイトから必要なバージョンのcore-srcアーカイブを取得します。ここでは6.2.0を例にします。取得したら展開して環境変数を設定します。環境変数をセットするためにinclude/ccp4.setup-cshまたはinclude/ccp4.setup-shを使用します。環境変数を指定し直すので、すでに別のバージョンのCCP4がセットアップしてある場合でも作業可能なはずです。
% tar zxvf ccp4-6.2.0-core-src.tar.gz % cd ccp4-6.2.0 % vi include/ccp4.setup-csh <-- bashの時はccp4.setup-sh 27: setenv CCP4_MASTER /xtal <-- これをアーカイブを展開した場所(ccp4-6.2.0/の親ディレクトリ)に変更します。 % source include/ccp4.setup-csh % ./configure --disable-x --disable-ccif --disable-mapslicer --disable-clipper --disable-ssm \ --disable-pdb_extract --disable-cctbx --disable-phaser --disable-diffractionImg --disable-fftw
configureするとだーっと流れますが、最終的に以下のように、XLAPACK_LIBが設定されればOKです。
********* BLAS AND LAPACK CONFIGURATION ***********
...
Searching for libraries with LAPACK and BLAS:
...found LAPACK library: /usr/lib/liblapack.a
Testing: try to link library against test program
gfortran -O -w -fno-second-underscore -fno-stack-protector -o testlink testlink.f -L/usr/lib -llapack
Link ok - using liblapack from /usr/lib
* Checking whether we need a separate BLAS library *
Testing: try linking library against test program
gfortran -O -w -fno-second-underscore -fno-stack-protector -o testlsame lsametst.f -L/usr/lib -llapack
Test program okay - additional separate BLAS not required
Test C linking for lapack library
gcc -O -w -DGFORTRAN -DPROTOTYPE -o testlink testlink.c -L/usr/lib -llapack
/tmp/ccsA28XH.o: In function `main':
testlink.c:(.text+0x5e): undefined reference to `dsyev'
collect2: ld はステータス 1 で終了しました
Linking in LAPACK/BLAS using XLAPACK_LIB="-L/usr/lib -llapack"
***** BLAS AND LAPACK CONFIGURATION FINISHED *******
configureのオプションについて
上記のオプションが最低限ですが、6.2.0にはRAPPERおよびPRODRGが含まれているので、これらが不要なときは、--disable-rapperおよび--disable-prodrgを指定することができます。
さらに、例えば特定のプログラムのみを単独で使用したい、などの場合、静的リンクしてビルドすることができます。その場合は、--non_sharedオプションを指定します。静的リンクをする際はglibc-staticおよびlapack-staticが必要です。
オプション | 内容 |
--disable-rapper | RAPPERをビルドしない |
--disable-prodrg | PRODRGをビルドしない(6.2.0以降) |
--non_shared | スタティックリンクする |
--with-shared-libs | 共有ライブラリもビルドする(--disable-ccifとの併用不可) |
ビルド
すべてをビルドする場合はmakeを実行すればビルドされますが、今回は個別のプログラムをビルドするのが目的なのでここでいきなりmakeせずに、ライブラリとプログラムに分けてビルドしていきます。
ビルドするソースツリーは以下です。
- ccp4-6.2.0/ - lib/ - src/ <-- ライブラリソースディレクトリ - src/ <-- プログラムソースディレクトリ
ライブラリのビルド
まず、CCP4ライブラリをビルドします。Core2 Quad 3GHzのシングルスレッドで1分程度です。
% cd lib/src <-- ccp4-6.2.0/lib/srcです % make
ソースの修正
自分でビルドする場合は通常ソースの修正が必要な場合だと思いますので、ここでソースの修正等の作業を行います。
プログラムのビルド
続いてプログラムをビルドします。
% cd ../../src <-- ccp4-6.2.0/srcです % make scala
このように必要なプログラム名を指定すると、そのプログラムだけをビルドすることができます。
なお、ccp4-6.2.0/src以下でmakeすると全てのプログラムをビルドします。すべてのバイナリを削除したい場合はmake realcleanです。
複雑なプログラム
clipperライブラリやCCTBXライブラリを必要とするプログラムをビルドしたい場合は、--disable-clipperや--disable-cctbxオプションを外してconfigureすればいいのですが、依存関係の解決などが案外大変かもしれません。