CodeZine(コードジン)

特集ページ一覧

COBOL言語をLinux環境で動かす

OpenCOBOLのコンパイル実行環境構築と簡単なCOBOLプログラムの作成

  • LINEで送る
  • このエントリーをはてなブックマークに追加
2008/06/03 14:00

目次

セットアップ 2/2

4.ソースのコンパイルとライブラリ設定

 展開したソースからcobolコンパイラとcobolライブラリを作成します。

 説明の内容で作業した場合は、現在作業しているディレクトリにopen-cobol-1.0というディレクトリが作成されていると思います。そのディレクトリに移動してコンパイル設定とコンパイル、作成されたコマンド・ライブラリ類の展開を行います。ターミナルで打鍵するコマンドは以下になります。

コンパイル設定
./configure
コンパイル
make
コマンド・ライブラリ類展開
make install
(1) コンパイル設定

 始めにコンパイル設定を行います。このコマンドを実行すると、ターゲットマシンの状態を判定し、適切なmakeファイルを作成します。コマンド実行での応答例は次のとおりです。

コンパイル設定コマンド実行例
[e-fuse@]$ ./configure
checking for a BSD-compatible install... /usr/bin/install -c
checking whether build environment is sane... yes
checking for gawk... gawk
checking whether make sets $(MAKE)... yes
checking whether to enable maintainer-specific portions of 
Makefiles... no
checking for gcc... gcc
...(途中省略)
config.status: executing default-1 commands
config.status: creating po/POTFILES
config.status: creating po/Makefile

OpenCOBOL Configuration:

  CC                   gcc
  COB_CC               gcc
  CFLAGS                -O2  -finline-functions -fomit-frame-pointer
 -fsigned-char -Wall -Wwrite-strings -Wmissing-prototypes
 -Wno-format-y2k
  COB_CFLAGS           -I/usr/local/include  -O2  
  COB_EXTRA_FLAGS      
  LDFLAGS              
  COB_LDFLAGS          
  COB_LIBS             -L${exec_prefix}/lib -lcob -lm -lgmp
 -lncurses -ldb -ldl
  COB_CONFIG_DIR       ${prefix}/share/open-cobol/config
  COB_LIBRARY_PATH     .:${exec_prefix}/lib/open-cobol
  COB_MODULE_EXT       so
  COB_SHARED_OPT       -shared
  COB_PIC_FLAGS         -fPIC -DPIC
  COB_EXPORT_DYN       -Wl,--export-dynamic
  COB_STRIP_CMD        strip --strip-unneeded
  Dynamic loading      System

  Use gettext for international messages:      yes
  Use Berkeley DB for file I/O:                yes
  Use enhanced Berkeley DB (>= 4.1)            yes
  Use fcntl for file locking:                  yes
  Use ncurses/pdcurses/curses for screen I/O:  yes
[e-fuse@]$

 tarで展開されたディレクトリにmakeファイルなどが作成されます。今回作成されたファイルは以下のコマンドで確認できます。

作成時刻降順ソートls
ls -ltc

 実行例は次のとおりです。

作成時刻降順ソートls実行例
[e-fuse@]$ ls -ltc
合計 2348
drwxrwxrwx  4 e-fuse e-fuse   4096  3月  3 17:04 bin
drwxrwxrwx  4 e-fuse e-fuse   4096  3月  3 17:04 cobc
drwxrwxrwx  4 e-fuse e-fuse   4096  3月  3 17:04 libcob
-rw-r--r--  1 e-fuse e-fuse    434  3月  3 17:04 defaults.h
drwxrwxrwx  3 e-fuse e-fuse   4096  3月  3 17:04 lib
drwxrwxrwx  2 e-fuse e-fuse   4096  3月  3 17:04 config
-rw-r--r--  1 e-fuse e-fuse   9900  3月  3 17:04 config.h
-rw-r--r--  1 e-fuse e-fuse  68449  3月  3 17:04 config.log
drwxrwxrwx  2 e-fuse e-fuse   4096  3月  3 17:04 po
-rw-r--r--  1 e-fuse e-fuse     23  3月  3 17:04 stamp-h1
drwxrwxrwx  6 e-fuse e-fuse   4096  3月  3 17:04 tests
-rw-r--r--  1 e-fuse e-fuse  23572  3月  3 17:04 Makefile
-rw-r--r--  1 e-fuse e-fuse   1302  3月  3 17:04 cob-config
-rwxr-xr-x  1 e-fuse e-fuse  53305  3月  3 17:04 config.status
drwxrwxrwx  2 e-fuse e-fuse   4096  3月  3 17:04 texi
-rwxr-xr-x  1 e-fuse e-fuse 209809  3月  3 17:04 libtool
-rwxrwxr-x  1 e-fuse e-fuse  44373  3月  3 15:03 ABOUT-NLS
-rwxrwxr-x  1 e-fuse e-fuse    436  3月  3 15:03 AUTHORS
...(以下省略)

 この例では、bin~libtoolまでが./configureで作成されたファイル、ABOUT-NLS以降がtar展開時に作成されたファイルということが分かります。

(2) コンパイル

 コンパイル設定で問題が無かったら、続いてコンパイルを行います。このコマンドを実行すると、前回に作成されたコンパイル設定に基づいてコンパイルを実行していきます。コンパイル設定ファイルを特に改変しなければ、カレントディレクトリにコンパイル生成物が作成されます。コマンド実行での応答例は次のとおりです。

コンパイルコマンド実行例
[e-fuse@]$ make
Creating defaults.h...
make  all-recursive
make[1]: Entering directory `/home/e-fuse/open-cobol-1.0'
Making all in lib
make[2]: Entering directory `/home/e-fuse/open-cobol-1.0/lib'
...(途中省略)
make[3]: Entering directory `/home/e-fuse/open-cobol-1.0/tests/cobol85'
make[3]: `all' に対して行うべき事はありません。
make[3]: Leaving directory `/home/e-fuse/open-cobol-1.0/tests/cobol85'
make[3]: Entering directory `/home/e-fuse/open-cobol-1.0/tests'
make[3]: `all-am' に対して行うべき事はありません。
make[3]: Leaving directory `/home/e-fuse/open-cobol-1.0/tests'
make[2]: Leaving directory `/home/e-fuse/open-cobol-1.0/tests'
make[2]: Entering directory `/home/e-fuse/open-cobol-1.0'
make[2]: `all-am' に対して行うべき事はありません。
make[2]: Leaving directory `/home/e-fuse/open-cobol-1.0'
make[1]: Leaving directory `/home/e-fuse/open-cobol-1.0'
[e-fuse@]$
(3) コマンド・ライブラリ展開

 コンパイルでカレントディレクトリに作成されたコマンド・ライブラリ類をシステムディレクトリに配置します。デフォルトは、「/usr/local/bin」配下にコンパイルコマンド、「/usr/local/lib」配下にライブラリが配置されます。コマンド応答例は次のとおりです。

コマンド・ライブラリ類展開実行例
[e-fuse@]$ make install
make  install-recursive
make[1]: Entering directory `/home/e-fuse/open-cobol-1.0'
Making install in lib
make[2]: Entering directory `/home/e-fuse/open-cobol-1.0/lib'
make[3]: Entering directory `/home/e-fuse/open-cobol-1.0/lib'
make[3]: `install-exec-am' に対して行うべき事はありません。
make[3]: `install-data-am' に対して行うべき事はありません。
make[3]: Leaving directory `/home/e-fuse/open-cobol-1.0/lib'
make[2]: Leaving directory `/home/e-fuse/open-cobol-1.0/lib'
Making install in libcob
...(途中省略)
make[2]: Entering directory `/home/e-fuse/open-cobol-1.0'
make[3]: Entering directory `/home/e-fuse/open-cobol-1.0'
test -z "/usr/local/bin" || mkdir -p -- "/usr/local/bin"
 /usr/bin/install -c 'cob-config' '/usr/local/bin/cob-config'
test -z "/usr/local/include" || mkdir -p -- "/usr/local/include"
 /usr/bin/install -c -m 644 'libcob.h' '/usr/local/include/libcob.h'
make[3]: Leaving directory `/home/e-fuse/open-cobol-1.0'
make[2]: Leaving directory `/home/e-fuse/open-cobol-1.0'
make[1]: Leaving directory `/home/e-fuse/open-cobol-1.0'
[e-fuse@]$

 コマンドが配置されたかはlsコマンドにて確認してください。

配置確認
[e-fuse@]$  ls -l /usr/local/bin
合計 448
-rwxr-xr-x  1 root root   1302  3月  3 16:21 cob-config
-rwxr-xr-x  1 root root 422155  3月  3 16:21 cobc
-rwxr-xr-x  1 root root   8535  3月  3 16:21 cobcrun
[e-fuse@]$  ls -l /usr/local/lib
合計 572
-rw-r--r--  1 root root 322706  3月  3 16:21 libcob.a
-rwxr-xr-x  1 root root    815  3月  3 16:21 libcob.la
lrwxrwxrwx  1 root root     15  3月  3 16:21 libcob.so -> 
libcob.so.1.0.0
lrwxrwxrwx  1 root root     15  3月  3 16:21 libcob.so.1 -> 
libcob.so.1.0.0
-rwxr-xr-x  1 root root 226642  3月  3 16:21 libcob.so.1.0.0

 (※ファイルオーナ、ファイルサイズ、作成日付は作成環境により異なります)

コンパイルの再実行
 コンパイル設定で作成されたmakeファイルにはcleanの定義があります。なんらかの理由でコマンド実行を中断した場合は、make cleanを行ってから再実行してください。

  • LINEで送る
  • このエントリーをはてなブックマークに追加

バックナンバー

連載:COBOLプログラミング

著者プロフィール

  • 布施 榮一(ふせえいいち)

    布施加工有限会社 代表取締役 布施加工って何しているとこなの?? 実はIT屋さんだったりします(笑) Linux基盤各種サービスの設計構築およびコンサルティングをやっています。 ブログもちょこちょこっと書いてます。 Alinous-Core 正規販売代理店

あなたにオススメ

All contents copyright © 2005-2021 Shoeisha Co., Ltd. All rights reserved. ver.1.5