* 個別のプログラムをビルドしよう! -- &Vine5; [#l3f5ec15]
 あまりない状況だと思いますが、CCP4の一部のプログラムをビルドしたくなるときがあります。~
 ~あまりない状況だと思いますが、CCP4の一部のプログラムをビルドしたくなるときがあります。~
 もちろんCCP4のソースを取得してビルドすれば可能ですが、プログラムによっては結構大変です。(ちょっと古い情報ですがCCP4/Advancedインストールに過去の試行錯誤をまとめてあります)。
 ~
 ここでは、CCP4の中核のプログラムのビルドについてまとめておきます。ちょっとこのプログラムだけをビルドしたい、というときに便利かも。clipperとかcctbxを使うプログラムはここでは取り上げません(結構大変なので)。
 
 ** aptでインストール [#a57a9ea7]
 - lapack-devel
 - glibc-static -- staticビルドをしたいとき
 - lapack-static
 
 ** ファイルの展開およびconfigure [#mbac2a1c]
 [[CCP4のFTPサイト>ftp://ftp.ccp4.ac.uk/ccp4/]]から必要なバージョンの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 で終了しました
  
  &color(red){''Linking in LAPACK/BLAS using XLAPACK_LIB="-L/usr/lib -llapack"''};
  
  ***** BLAS AND LAPACK CONFIGURATION FINISHED *******
 
 *** configureのオプションについて [#w255ba87]
 上記のオプションが最低限ですが、6.2.0にはRAPPERおよびPRODRGが含まれているので、これらが不要なときは、''--disable-rapper''および''--disable-prodrg''を指定することができます。~
 さらに、例えば特定のプログラムのみを単独で使用したい、などの場合、静的リンクしてビルドすることができます。その場合は、''--non_shared''オプションを指定します。静的リンクをする際はglibc-staticおよびlapack-staticが必要です。
 |オプション        |内容|h
 |--disable-rapper  |RAPPERをビルドしない|
 |--disable-prodrg  |PRODRGをビルドしない(6.2.0以降)|
 |--non_shared      |スタティックリンクする|
 |--with-shared-libs|共有ライブラリもビルドする(--disable-ccifとの併用不可)|
 
 ** ビルド [#h66b23c3]
 すべてをビルドする場合は''make''を実行すればビルドされますが、今回は個別のプログラムをビルドするのが目的なのでここでいきなりmakeせずに、ライブラリとプログラムに分けてビルドしていきます。~
 ビルドするソースツリーは以下です。
  - ccp4-6.2.0/
    - lib/
      - src/  <-- ライブラリソースディレクトリ
    - src/    <-- プログラムソースディレクトリ
 
 *** ライブラリのビルド [#hfafc01a]
 まず、CCP4ライブラリをビルドします。Core2 Quad 3GHzのシングルスレッドで1分程度です。
  % cd lib/src  <-- ccp4-6.2.0/lib/srcです
  % make
 
 *** ソースの修正 [#l14937a7]
 自分でビルドする場合は通常ソースの修正が必要な場合だと思いますので、ここでソースの修正等の作業を行います。
 
 *** プログラムのビルド [#eb645391]
 続いてプログラムをビルドします。
  % cd ../../src  <-- ccp4-6.2.0/srcです
  % make scala
 このように必要なプログラム名を指定すると、そのプログラムだけをビルドすることができます。~
 なお、ccp4-6.2.0/src以下で''make''すると全てのプログラムをビルドします。すべてのバイナリを削除したい場合は''make realclean''です。
 
 ** 複雑なプログラム [#se8df07a]
 clipperライブラリやCCTBXライブラリを必要とするプログラムをビルドしたい場合は、--disable-clipperや--disable-cctbxオプションを外してconfigureすればいいのですが、依存関係の解決などが案外大変かもしれません。