Cygwin なんでも掲示板

一覧最新記事過去一覧 | 検索FAQアンテナHOME
(新規投稿・発言はできません)


スレッド

└◇2931:
tinycobolでコンパイルエラー [cobol初心者] 06/09 18:35

 └◇2937:Re:tinycobolでコンパイルエラー [Peg] 06/12
  ├◇2941:Re[2]:tinycobolでコンパイルエラー [cobol初] 06/13
  └◇2942:Re[2]:tinycobolでコンパイルエラー [nil] 06/13
   └◇2946:Re[3]:tinycobolでコンパイルエラー [cobol初] 06/14
    └◇2947:Re[4]:tinycobolでコンパイルエラー [nil] 06/14
     └◇2957:OpenCOBOL 周りの話 [Peg] 06/19
      └◇2960:Re:OpenCOBOL 周りの話 [nil] 06/20
       └◇2966:Re[2]:OpenCOBOL 周りの話 [Peg] 06/25 <


2931● tinycobolでコンパイルエラー[ cobol初心者 ] 2005 06/09 18:35
OSがWindows2000のパソコンにCOBOLの環境を構築しています。
そこで下記をインストールしました。
 @Cygwin
 Adb-1.86-1.cygwin.tar.gz
 Btinycobol-0.61-1.cygwin.tar.gz
 Cgcc3.3.3(cygwin setup.exeより取得 c,c++のみ)
 ※ABはCygwinのカレントディレクトリでtarコマンドにて解凍

早速'HELLO WORLD!'を表示するだけのプログラムをコンパイル&リンクしてみたら、以下メッセージが出力され、失敗しました。


$ htcobol -vx hello.cob
/usr/local/share/htcobol/htcobolpp -v -t 8 -x hello.cob -o hello.i
/usr/bin/as.exe -o hello.o hello.s
/usr/bin/gcc.exe -o hello hello.o -L/usr/lib -L/usr/local/lib -lhtcobol -lcygwin
/usr/local/lib/libhtcobol.a(fileio.o):fileio.c:(.text+0x723): undefined reference to `dbopen'
/usr/local/lib/libhtcobol.a(fileio.o):fileio.c:(.text+0x818): undefined reference to `dbopen'
/usr/local/lib/libhtcobol.a(fileio.o):fileio.c:(.text+0x45b9): undefined reference to `_dbopen'
Info: resolving __impure_ptr by linking to __imp___impure_ptr (auto-import)
collect2: ld returned 1 exit status


対応策をご存知の方、ご教授願います。
スレッド一覧


2937● Re:tinycobolでコンパイルエラー[ Peg ] 2005 06/12 14:11
リンカが libdb を見つけられないんだから、
db.h を /usr/include へコピーして、
libdb.a を /lib か /usr/local/lib にコピーすれば
とりあえず、回避出来るかと思います。

それでもだめならこの辺りを参照(少し古いですが・・・)
http://homepage1.nifty.com/hitotsumi/pc/tinycobol.htm
スレッド一覧


2941● Re[2]:tinycobolでコンパイルエラー[ cobol初心者 ] 2005 06/13 15:04
返信ありがとうございます。

早速、教えていただいたようにやってみたのですが、
結果は同じでした。

もう一度、cygwinからインストールしなおしてみます。
スレッド一覧


2942● Re[2]:tinycobolでコンパイルエラー[ nil ] 2005 06/13 22:39

|>※ABはCygwinのカレントディレクトリでtarコマンドにて解凍

ここで "カレントディレクトリ" と言う単語ではうまく状況説明が伝わりません。
これは、「Cygwinの install dir. (例. C:/Cygwin)」あるいは 「Cygwinのroot dir. (/)」という意味ですよね。

tar ztf db-1.86-1.cygwin.tar.gz で展開場所を確認して、ls /usr/lib/libdb.* として正しい位置に展開されているかどうか確認するのがよいでしょう。


>リンカが libdb を見つけられないんだから、

そりゃそうなんですが、htcobolからのメッセージを信ずる限り、リンカに -ldb が指定されていません。

|>/usr/bin/gcc.exe -o hello hello.o -L/usr/lib -L/usr/local/lib -lhtcobol -lcygwin

というわけで、tinycobol-0.61-1.cygwin.tar.gz db-1.86-1.cygwin.tar.gz を正しくインストールしてみた(はず)のですが、同じく正常に動作しませんでした。

あまり興味ないので誤認しているかもしれませんが、0.61 のバグの可能性もあると思います。定義ファイル /usr/local/share/htcobol/htcobolrc 中の LD_IO_LIBS: -ldb が、有効になってない気がします。


従って、TinyCOBOL 自身のソースを確認するとか、この掲示板より TinyCOBOL に関するコミュニティやサイトを調べたほうがよいでしょう。また、OpenCOBOL というのもあるようです。


他の対応策としては、動作確認ができている古い version を使うとか、C等の知識がある人ならリンクは自分で直接 gccを実行する、など、いろいろあるでしょうが… いずれにせよ、TinyCOBOL の解説サイトを探したほうがよいと思います。

$ gcc -o hello hello.o -L/usr/lib -L/usr/local/lib -lhtcobol -ldb -lcygwin
スレッド一覧


2946● Re[3]:tinycobolでコンパイルエラー[ cobol初心者 ] 2005 06/14 11:30
nilさん返信ありがとうございます。

Cygwinから再インストールしましたが、現象は変わりませんでした。

>ここで "カレントディレクトリ" と言う単語ではうまく状況説明が伝わりません。
>これは、「Cygwinの install dir. (例. C:/Cygwin)」あるいは 「Cygwinのroot dir. (/)」という意味ですよね。

すみません、そのとおりです。

>tar ztf db-1.86-1.cygwin.tar.gz で展開場所を確認して、>ls /usr/lib/libdb.* として正しい位置に展開されているかどうか確認するのがよいでしょう。

確認したところ、正しく展開されていました。

結局、

$ htcobol -c hello.cob
$ gcc -o hello hello.o -L/usr/lib -L/usr/local/lib -lhtcobol -ldb -lcygwin

として、コンパイルはできました。

納得がいかないので、Tinycobolのサイトとかで調査してみようと思います。

ありがとうございました。
スレッド一覧


2947● Re[4]:tinycobolでコンパイルエラー[ nil ] 2005 06/14 18:31

>納得がいかないので、Tinycobolのサイトとかで調査してみようと思います。
Cygwin版は有志のサポートのような気がするので、対応が不十分なのはしかた無いかもしれません。可能ならば、自分でソース見たほうが速いかも……

基本的に掲示板は情報交換の場所なので、何かわかれば、情報提供していただけるのがよいと思います。


最近、この掲示板でも TinyCOBOL の話題がいくつか続いてるようですが、2007年問題がらみで、学校の課題にでもなってるんですかね……
ついでにちょっと OpenCOBOL も見てみました。

        http://jp.opencobol.org/
        http://jp.opencobol.org/modules/mydownloads/singlefile.php?cid=1&lid=12

setup.exe で binaryを network installできるようですが(0.31)、ううむ、現状では、必要なパッケージを自動選択できないようで、Cygwin 初心者には混乱が起きるような気がします。
(gettext-devel gmp libdb4.2-devel libiconv libncurses-devel libtool1.5 等を入れないと link library が不足)

TinyCOBOL, OpenCOBOL ともに開発途中のものなので当然でしょうが、Linux(or UNIX), Cygwin あるいは Cプログラムに慣れている人、自分でフリーソフトのインストールができる人、向きのもののようです。

というわけで、私見ですが、両者とも、初級者にはちょっと薦めにくい状況だと思います。
開発、利用者側からの、Cygwin向けの入門解説があれば変わってくるかもしれませんが。
(ましてや COBOLの学習のために Cygwin を始めるような泥沼なケースが無ければいいと思いますが…… sigh.)

P.S.
"OpenCOBOL文書図書館" の中の "Cygwin インストールガイド" の文書は、操作例はよいにしても、.bashrc 等の設定例や cygwin.bat の変更は、初心者向きにはトラブルの元になりかねない内容のような気がして、ちょっと心配……
スレッド一覧


2957● OpenCOBOL 周りの話[ Peg ] 2005 06/19 18:20
> OpenCOBOL
> gettext-devel gmp libdb4.2-devel libiconv
> libncurses-devel libtool1.5 等を入れないと
> link library が不足
この辺りの話、つまり、依存するライブラリは setup.exe を
使ってインストールすれば、楽にインストール出来るように
しておいたつもりなのですが、gcc ないと使えなかったり、
リリース直後と比較して cygwin 本家の setup.ini が
変更されていて、ライブラリの一部が不足していました。

現在は依存関係について問題ありません。

> "OpenCOBOL文書図書館" の(中略) .bashrc 等の設定例や
> cygwin.bat の変更は、初心者向きにはトラブルの元に
> なりかねない内容のような気がして、ちょっと心配……
と思いまして実は最近、この辺りの設定例を省いたりした、
簡単な導入手順を書こうとしているところです。
上の依存関係の問題やら MinGW 版など含めて現在調整中。
スレッド一覧


2960● Re:OpenCOBOL 周りの話[ nil ] 2005 06/20 21:02
|この辺りの話、つまり、依存するライブラリは setup.exe を
|使ってインストールすれば、楽にインストール出来るように
|しておいたつもりなのですが、

すいません、これは私の勘違いもありました。

通常のサイトを Download元に指定した後、同時に
http://members8.tsukaeru.net/pegstyle/cygwin/ *も*
"複数選択" しておけば、自動的に依存関係は解決されますね。
(もともと setup.iniに記述指定があったのですが、members8.tsukaeru.net 下に
他のパッケージが無いので他のサイトの指定も必要なのですね。
私は試験的な都合で members8.tsukaeru.net単独しか選択してませんでした)

いちおう、サイトの手順どおり、そのまま(前の選択をクリアしないまま) "Add"
しただけなら大丈夫なのでしょうが、少し注意書きが必要な気がします。


|と思いまして実は最近、この辺りの設定例を省いたりした、
|簡単な導入手順を書こうとしているところです。
|上の依存関係の問題やら MinGW 版など含めて現在調整中。

どのようなポリシーで、どういった人を対象にするかで、いろいろ違ってくるので難しいと思いますが…
(初心者には、本質的でない設定を説明なしに与えたままにしないほうが良い気がするので……)

気になったところを少し… こうるさくてすいません。

- Downloadの保存先が /etc/setup/ なのはいささか大胆(不安)
- Cygwin.bat を rxvt 依存に書き換えているが、インストールで rxvt
が必要になることを説明していない。
そもそも、書き直すと、当初はトラブルのとき第三者にきちんと説明できない
であろうから、Cygwin-rxvt.bat とかを別に用意すべきでは。
(rxvt推薦なのが、望ましいかどうかはわかりませんが)
- HOME は自分で再定義しない。(トラブルの元)
- DISPLAY, TERM も自分で設定しない。
現在通常は、必要な値に設定されてない状況自体がすでにおかしいので。
- CFLAGS="-O2" は、COBOL 以外の make にも影響しそう
- コマンド clear は必須パッケージでは無いので、.bash_logout に入れないほうが…
スレッド一覧


2966● Re[2]:OpenCOBOL 周りの話[ Peg ] 2005 06/25 14:03
> 他のパッケージが無いので他のサイトの指定も
> 必要なのですね。
はい。放置中で申し訳ないです。
次回、複数選択の画像を追加する予定です。

> Downloadの保存先が /etc/setup/ なのはいささか大胆
特に問題は起きていないので不安は無いのですが変えます。

> rxvt が必要になることを説明していない。
> DISPLAY, TERM も自分で設定しない。
> コマンド clear ...
この辺りの説明はご指摘の通り混乱の元になるので
省くつもりです。まあ、Cygwin 周りについての話は
Cygwin を扱ったサイトに丸投げするとも言いますが、
あまりゴチャゴチャしないようにはしたいと思います。
スレッド一覧

早田のホームページへ
CGIROOM