WEB相談室

Webページ作成に関しての何でも掲示板です。

タイトル:C++で作られたCGIの設置方法

0:[投稿] ジェリン [URL] [2003/01/28 10:40 ][環境:WIN XP, IE 6.0, Borland C++ Compiler CGI (C++)]

こんにちは、この質問を見てくださってありがごうとございます。
C++で出来たCGIを某サイトからダウンロードしたのですが、それの設置方法がどうも分かりません。
(FTPを使った掲示板、チャットCGI(PERL)などの設置方法は心得ています。)

http://members.tripod.co.jp/gring/
ソースは上記のアドレスにあります。
これをBORLANDの無料C++COMPILERでコンパイルしてから、そのままサーバーにアップロードするものかと思いました。
そこでコンパイルを試し見るものの、何故かコンパイルエラーが表示されてコンパイルできません。

どうすれば良いでしょうか?


1:[回答] 七つ夜 [MAIL] [2003/01/28 13:49 ]

コンパイルエラーの内容は何ですか?

ソースが確認できないので(会社なので勝手にダウンロードできないのです)わかりませんが、まさか、MFCを使って組まれたソースじゃないですよね?それだとVC++でないとコンパイルできないかと。そうでなければ、ソースに不備があるか、必要なDLLがそちらのマシンにない等ではないかと。

>>これをBORLANDの無料C++COMPILERでコンパイルしてから、そのままサーバーにアップロードするものかと思いました。

 サーバはUNIXですか?WINDOWSですか?WINDOWSでしたらその方法でも動くかと思いますが、UNIXだとだめです。コード体系が違うので、サーバ上でコンパイルしてやらなければいけません。当然ながら、サーバ側でC++のコンパイルを許している必要がありますので、その場合はサーバ側に確認してください。


2:[回答] ジェリン [2003/01/29 07:54 ]

七つ夜さん、お返事ありがとうございます。

コンパイルエラー表示の件ですが、コンパイルが出来ない、とだけ表示されて何が問題なのかは表示されていないのです。
MFCを使って組まれたソースではないかと思います。
もしかしたらソースに不備があるのかもしれません。
サーバーはUNIXです。
サーバー側でのコンパイルは許されていないようです。残念。


3:[回答] 七つ夜 [MAIL] [2003/01/29 11:21 ]

七つ夜です。

今朝ソースを見ておこうとリンク先にアクセスしたらソースが消えてました。残念。

で、ソースが見れないんでなんですが、単にコンパイルできないって出るだけでしたら、コンパイラの設定の問題なのかもしれませんね。わたしはBORLANDのC++コンパイラは使ったこと無いのでそのへんはわかりませんが。コンパイラの設定ならBORLAND C++系のBBSで聞いてたほうが回答得やすいかも。

サーバでのC++コンパイラが許されてないとなると、別途許可されてるレンタルサーバを探すしかないかも。サーバと同じ環境(機種,OS)のマシンがあれば、そこでコンパイルして実行ファイルをサーバに転送する手もありますが。

参考までに、UNIXサーバでC++のCGIを設置するまでの手順。
 1. telnetでUNIXサーバに接続する
 2. ソースをサーバ上に転送する(先にFTPで送っておいてもOK)
 3. g++等のC++コンパイラでコンパイルする
 4. 実行ファイルをCGI実行ディレクトリに設置
 5. ソースファイルを消去
あとはPerlのときと一緒です。


4:[回答] ジェリン [2003/01/29 18:33 ]

手順(1〜5)とても分かり易いです。ありがとうございます(^^)
とりあえず消えていたファイルをもう一度アップロードしてみました。
良ければもう一度ご覧になっていただけないでしょうか?

BORLANDのC++系のBBSでも聞いてみましたが、凄く分かり難い解答がいくつも…何度も聞きなおしましたが、結局さっぱりでした。


5:[回答] 七つ夜 [MAIL] [2003/01/30 11:16 ]

ダウンロードしてみました。これ、C++ではなくてCのソースですね。もしかしたらその辺かも?BOLANDのC++コンパイラはCもコンパイル可能ですか?

あと、メイクファイルが見当たりませんが、これも必要ないのかな?VC++では必要ないんでBOLANDもそうなのかもしれないですが、コンパイル自体ができないというと、メイクファイルが必要なのかも。UNIXサーバに転送してコンパイル&リンクする場合にはメイクファイルは必須です。

で、UNIXマシン(SUN OS:Solaris2.6)に持っていってコンパイル&リンクしてみました(メイクファイルは適当に作りました)。一部でC++形式のコメントが使われていたり、へんなところでエスケープシーケンス(\)が入っていたり(多分、ブラウザでの文字化け対策だと思いますので、\→\\に修正してください)、ループの終了条件がおかしかったりするところがあるんで、このあたりは修正必要ですね。


6:[回答] ジェリン [2003/01/30 15:06 ]

おお、Cのソースだったのですか!
なんかおかしいなぁと思っていたら…Cはプログラムしたことないですねぇ。C++と大して変わらないと聞いたことはありますけど。
シーケンスとループ部分は修正しましたが、まだコンパイル出来ないようです。
BORLANDではCはコンパイル出来ないと仮定して(実際はどうなのか分からないです)、違うコンパイラーを今探している途中です。

・・リンクとは一体何の事でしょうか?

それと、このソースをコンパイルする時は普通にコンパイルボタンを押すだけで良いのですよね?コンパイル前に色々な操作等は不要ですよね?

よろしくお願いします。


7:[回答] ジェリン [2003/01/30 15:59 ]

DEV C++という無料コンパイラで試してみると…出ました!コンパイルエラーがたくさん出ました!
その中で気になったのは sys/resource.h というファイルが存在しないという表示です。
SIGBUS,SIGSYS,SIGPIPEなどの関数が宣言されていないというエラーが出ますが、多分それらは sys/resource.h で宣言されているのだと思います。
どうでしょうか?


8:[回答] 七つ夜 [MAIL] [2003/01/31 10:52 ]

CはC++の元なんで、C++が読める人ならCも読めると思いますよ。違いは「クラスがない」「例外処理が無い」「関数のオーバーロードがない」「文字列型(std::string等)がない」等です。細かいところ挙げていったらいっぱいあるけど。

で、コンパイルできたようでまずは第一段階クリアですね(^^) sys/resource.hはUNIXのC(ANSI Cの)ヘッダファイルで、UNIXだと/usr/includeの下に普通はあります(環境によっては違うかもしれません)。SIGBUS等の定数(関数ではないですね)は、signal.hから呼ばれているsys/signal.hに定義されています。これもUNIXのCのもので、WINDOWSにはどうやらないようですね。sysが絡んでくるとシステム関係の制御になるんで、WINDOWS上だと動かないかも。UNIXサーバをレンタルするなりしてそこでコンパイルしてみることをお勧めします。

あと、リンク。C/C++のソースはコンパイルしただけだと実は実行ファイルはできません。それぞれのソースファイルをコンピュータが理解できる形式にしたもの(.oファイル)が出来るだけです。これらを関連付けて一つの実行ファイルを創ることを"リンク"といいます。コンパイルって言葉だけで関連付け作業まで含めて言うこともありますけれど、元は別です。WINDOWS(VC++?)では両方合わせて"ビルド"っていいますね。

コンパイルする際に前作業が必要かどうかは、コンパイラによります。わたしがWINDOWS上で使っているVC++は要りませんし、UNIXのCコンパイラは事前にメイクファイル(コンパイルの手順を記述したファイル)を創る必要があります。
あと、このソース、main()関数が書かれたファイルが複数あるので、全部を一度にコンパイルして一つの実行ファイルができるのではなく、いくつかのファイルの組毎にコンパイルして複数の実行ファイルができるっぽいですね。そのへんの仕様とかって書かれたもの、ありませんでした?

回答(必須): 状態:

お名前(必須):

e-mail:

URL:




[戻る]

ChaichanPAPA's World