ローカル開発環境構築(COBOL編)
仕事の関係でCOBOLを学習する必要が出てきたため、せっかくなのでVagrantでopensource COBOLを動かせるローカル開発環境を構築してみました。 参考サイト様のほぼそのままですが(多謝)、とりあえずできたので備忘録も兼ねて記載しておきます。
■環境
使用PC:Windows10
構築する仮想マシン:CentOS6.8
■必要なソフトウェアのインストール
■ローカル開発環境(VM)の構築
今後仮想環境を複数作成する可能性を考慮して、仮想環境を括る”Vagrant”をCドライブ直下に作成し、その下に今回作成する仮想環境のディレクトリを作成
> mkdir C:\Vagrant\cbl_centos68
cdコマンドで移動
> cd C:\Vagrant\cbl_centos68
Vagrantfile の作成
C:\Vagrant\cbl_centos68>vagrant init bento/centos-6.8 A `Vagrantfile` has been placed in this directory. You are now ready to `vagrant up` your first virtual environment! Please read the comments in the Vagrantfile as well as documentation on `vagrantup.com` for more information on using Vagrant.
Vagrantfileの編集
作成されたVagrantfileをエディタで開き、35行目、以下の部分のコメントアウトを外す
config.vm.network "private_network", ip: "192.168.33.10"
VMの起動
C:\Vagrant\cbl_centos68>vagrant up
C:\Vagrant\cbl_centos68>vagrant ssh
CentOSのアップデート
[vagrant@localhost ~]$ sudo yum update -y
opensource COBOLをインストール
opensource-cobol-1.4.0J-1.el6.x86_64.rpmを以下サイトからダウンロードして、先程作成したC:\Vagrant\cbl_centos68
に格納しておく
先程のrpmファイルがVagrantディレクトリに格納されているのを確認してlocalinstallを実行
[vagrant@localhost ~]$ cd /vagrant [vagrant@localhost vagrant]$ ls hello.cbl opensource-cobol-1.4.0J-1.el6.x86_64.rpm Vagrantfile [vagrant@localhost vagrant]$ sudo yum localinstall opensource-cobol-1.4.0J-1.el6.x86_64.rpm
途中必要となるパッケージのインストールを求められるので承認
Install 6 Package(s) Total size: 21 M Total download size: 20 M Installed size: 35 M Is this ok [y/N]: y
以下メッセージが表示されれば成功
Installed: opensource-cobol.x86_64 0:1.4.0J-1 Dependency Installed: cpp.x86_64 0:4.4.7-23.el6 gcc.x86_64 0:4.4.7-23.el6 glibc-devel.x86_64 0:2.12-1.212.el6 glibc-headers.x86_64 0:2.12-1.212.el6 kernel-headers.x86_64 0:2.6.32-754.2.1.el6 Complete!
バージョン確認
[vagrant@localhost vagrant]$ cobc -version opensource COBOL 1.4J OSS Consortium's patched version of OpenCOBOL1.1(Feb.06 2009) ---- cobc (OpenCOBOL) 1.1.0 Copyright (C) 2001-2009 Keisuke Nishida / Roger While Built May 07 2015 17:18:48 Packaged Feb 06 2009 10:30:55 CET
■必要な各ライブラリのインストール
gmp-develのインストール
[vagrant@localhost vagrant]$ sudo yum install gmp-devel
途中必要となるパッケージのインストールを求められるので承認
Install 1 Package(s) Total download size: 171 k Installed size: 337 k Is this ok [y/N]: y
以下メッセージが表示されれば成功
Installed: gmp-devel.x86_64 0:4.3.1-13.el6 Complete!
ncurses-develのインストール
[vagrant@localhost vagrant]$ sudo yum install ncurses-devel
途中必要となるパッケージのインストールを求められるので承認
Install 1 Package(s) Total download size: 641 k Installed size: 1.7 M Is this ok [y/N]: y
以下メッセージが表示されれば成功
Installed: ncurses-devel.x86_64 0:5.7-4.20090207.el6 Complete!
db4-develのインストール
[vagrant@localhost vagrant]$ sudo yum install db4-devel
途中必要となるパッケージのインストールを求められるので承認
Install 2 Package(s) Total download size: 7.1 M Installed size: 26 M Is this ok [y/N]: y
以下メッセージが表示されれば成功
Installed: db4-devel.x86_64 0:4.7.25-22.el6 Dependency Installed: db4-cxx.x86_64 0:4.7.25-22.el6 Complete!
■hello.cblを作成してコンパイル~実行
適当にハローワールドを出力するCOBOLプログラム(hello.cbl)を作成して先程のVagrantフォルダに格納しておく
[vagrant@localhost vagrant]$ cobc -x -std=cobol85 hello.cbl
正しくコンパイルされていればhelloファイルが出来上がる。
[vagrant@localhost vagrant]$ ls hello hello.cbl opensource-cobol-1.4.0J-1.el6.x86_64.rpm Vagrantfile
ただしこのままでは実行できない。
/etc/ld.so.conf.dの中にlibcob.so.1
の場所を記載したconfファイルを作成しておく必要がある。
libcob.so.1の場所を確認
[vagrant@localhost vagrant]$ sudo find / -name libcob.so.1 /usr/local/lib/libcob.so.1
viコマンドで先程確認した場所を記載したconfファイルを作成
[vagrant@localhost vagrant]$ sudo vi /etc/ld.so.conf.d/usr-local-lib.conf
catコマンドで作成したconfファイルの内容を確認
[vagrant@localhost vagrant]$ cat /etc/ld.so.conf.d/usr-local-lib.conf /usr/local/lib
ldconfigコマンドで設定を反映させる
[vagrant@localhost vagrant]$ sudo ldconfig
lddコマンドで確認するとlibcob.so.1のパスが通っているのが確認できる
[vagrant@localhost vagrant]$ ldd ./hello linux-vdso.so.1 => (0x00007ffccf0cf000) libcob.so.1 => /usr/local/lib/libcob.so.1 (0x00007f5d531a1000) libm.so.6 => /lib64/libm.so.6 (0x00007f5d52f1d000) libgmp.so.3 => /usr/lib64/libgmp.so.3 (0x00007f5d52cc1000) libncurses.so.5 => /lib64/libncurses.so.5 (0x00007f5d52a9f000) libdb-4.7.so => /lib64/libdb-4.7.so (0x00007f5d5272a000) libc.so.6 => /lib64/libc.so.6 (0x00007f5d52395000) libdl.so.2 => /lib64/libdl.so.2 (0x00007f5d52191000) libtinfo.so.5 => /lib64/libtinfo.so.5 (0x00007f5d51f70000) libpthread.so.0 => /lib64/libpthread.so.0 (0x00007f5d51d52000) /lib64/ld-linux-x86-64.so.2 (0x00007f5d533de000)
helloファイルを実行
[vagrant@localhost vagrant]$ ./hello HELLO, WORLD!