[Armadillo:03610] Re: thttpdにおけるCGIの使用について

Yukihiro Yokotani email@hidden
2008年 10月 29日 (水) 20:00:22 JST


> たぶん環境が壊れているんじゃないでしょうか?
> 
> http://lists.atmark-techno.com/pipermail/armadillo/2004-October/000071.html
> 
> 以前も壊した人がいるので、どうやって壊しているのかとても知りたいです。

私の方で作成したほかのアプリケーションは正常に動作しているので
環境は壊れていないと思います。

いろいろ試したところ以下のようにしたら正常に「Hello!」がコンソールにもブラウザにも
表示されるようになりました。
下記環境と手順を記述いたします。

ただひとつ問題があり、拡張子に「cgi」があると
「/home/www-data/cgi-bin/index.cgi: /lib/libc.so.6: version 'GLIBC_2.0' not found
(required by /home/www-data/cgi-bin/index.cgi)」
というエラーが引き続き出ます。
拡張子無しの場合正常に表示することができました。
この辺りが環境が壊れているということになるのでしょうか?
心当たりがあるとすると、一度make menuconfigでperlを有効にした位なのですが・・・・

<環境>
開発環境:ATDE2 v20071018
対象:Armadillo-240
Linux カーネル:v2.6.12.3-a9-15
atmark-dist:v20080617 (Armadillo-240.Baseのデフォルトのままのイメージを使用しています。)

<手順>
1. CGIのソースファイルの作成
以下のファイルを、「index.c」というファイル名で作成しました。
#include <stdio.h>

int main(void)
{
	printf("Content-type:text/html\n\n");	
	printf("<html><head></head><body>");
	printf("Hello!<br>");
	printf("</body></html>");

	return 0;
}

2. 開発PC上での動作確認
ATDE2上で下記のように実行すると、意図した通りに動作することを確認できました。
$ gcc -Wall -o index.cgi index.c
$ ./index.c
Content-type:text/html\n\n
<html><head></head><body>
Hello!<br>
</body></html>
$ rm index.cgi

3. クロスコンパイル
以下のMakefileでmakeを実行しました。
# ROOTDIR=/usr/src/atmark-dist-20080617
ifndef ROOTDIR
ROOTDIR ?= ../atmark-dist-20080617
endif
ROMFSDIR = $(ROOTDIR)/romfs
ROMFSINST = romfs-inst.sh
PATH := $(PATH):$(ROOTDIR)/tools

UCLINUX_BUILD_USER = 1
include $(ROOTDIR)/.config
LIBCDIR = $(CONFIG_LIBCDIR)
include $(ROOTDIR)/config.arch


EXEC = index
OBJS = index.o

all: $(EXEC)

$(EXEC):$(OBJS)
	$(CC) $(LDFLAGS) -o $@ $(OBJS) $(LDLIBS)

clean:
	-rm -f *.elf *.gdb *.o *.a *.cgi *~

romfs:
	$(ROMFSINST) /bin/$(EXEC)

%.o: %.c
	$(CC) -c $(CFLAGS) -o $@ $<


4. HTTPサーバの設定
HTTPサーバにはthttpdを使用し、設定ファイルはデフォルトのままです。

5. Armadillo上への配置
Armadillo-240の
/home/www-data/cgi-bin/indexという場所にファイルを配置しました。

そのとき、下記コマンドにより、ファイルに実行権限をあたえました。
# chmod +x /home/www-data/cgi-bin/index
> 
6. ローカルでの動作確認
下記のコマンドのように、ローカルで実行すると、意図したように動作することが
確認できました。
Content-type:text/html\n\n
<html><head></head><body>
Hello!<br>
</body></html>

7. httpd経由での動作
しかし、Webブラウザ(IE7)で表示すると、意図したように
「Hello!」と表示できるようになりました。








armadillo メーリングリストの案内