セットアップ 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 -ltc
実行例は次のとおりです。
[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
(※ファイルオーナ、ファイルサイズ、作成日付は作成環境により異なります)