esaywang 发表于 2006-9-28 18:28:22

急,uclinux下c语言写cgi的,各位给指导指导吧!

各位帮帮忙,先谢谢了!帮我看看出了什么问题! 谢谢了!调了一下午了,头昏脑胀的,还是没有结果!
本来打算用库文件写,听厂家技术支持说板子里的boa不支持库文件,只能用这种方法写了!
请问有没有什么办法可以不用重新编译内核就可以使用库文件的?(厂家没有给相关的源码)

index.html 放在/home/httpd/目录下
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>乘法计算</title>
<H1> 乘法计算!</H1>
</head>
<body bgcolor=#CCFF99>
<form action="/cgi-bin/cgi_demo">
<P> 请在下面填入乘数和被乘数,按下确定后可以看到结果.<BR>
<BR>
<INPUT name="m" size="5">
<INPUT name="n" size="5">
<INPUT type=submit value= "确定">
</body>
</html>

cgi_demo.c放在/home/httpd/cgi-bin/目录下

/** cgi_demo.c **/
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
        char *data;
        long m,n;
        printf("<html>");
        printf("<header>");
        printf("<TITLE>mult</TITLE>");
        printf("<meta http-equiv=\"Content-Type\" content=\"text/html;charset=gb2312\">");
        printf("<H3>mult<H3> ");
        printf("</header>");
        printf("< body bgcolor = #CCFF99 >");
        data = getenv("QUERY_STRING");       
        if(data == NULL)
                printf("<P> ERROR ! ");
        else if (sscanf(data,"m=%1d&n=%1d",&m,&n)!=2)
                printf("<P> EROOR ! ");
        else
                printf("<P> %1d and %1d mult is : %1d .",m,n,m*n );       
        printf("</body>");
        printf("</html>");
        return 0;
}

编译过没有什么问题,ftp 进入开发板,在浏览器中打开index.html网页后,点击后显示:
the server encountered an internal error and can't complete your request !

npcomet 发表于 2006-9-28 19:01:23

非本版问题『Magic Linux技术支持区 』
移出

jiangtao9999 发表于 2006-9-28 21:42:12

:roll:
应该放到嵌入版吧???

你的 apache 服务器有问题?这段代码在 x86 系统上工作正常么?


支不支持库文件,要看程序编写的了,既然他说不支持,那就应该只能重新编译。估计他们的 boa 程序里根本就没有包含调用库的功能。
嵌入式开发,所有东西以精简为主,我觉得使用 cgi 很不明智。

我建议你试试 perl 、php 一类的解释程序,你要用最小的依赖。

esaywang 发表于 2006-9-29 09:14:30

谢谢你的精彩回复!
我有点疑惑,就是我的cgi_demo是一个二进制文件,和目标板里有没有这个库有什么关系吗?就象51单片机一样,我包含了许多库,但是51目标板子上里也没有目标库,也照样可是使用库文件啊?
请问我的cgi_demo.c有没有什么问题?
apache服务器是指什么?是指目标板上的吗?<<呵呵,我是菜鸟!>>
x86系统上我没有试过!
进程有点跟不上了,能不能给我讲的详细点!
先谢谢了!节日快乐!

esaywang 发表于 2006-9-29 09:30:13

我看了一下了apache服务器,也瞧不出什么问题!

esaywang 发表于 2006-9-29 10:27:10

jiangtao9999,你好! 预祝节日快乐!

点击"确定"按钮以后,服务器返回信息上显示:
-------------------------------------------------------------------------------------------------------
url上显示:192.168.4.127/cgi-bin/cgi_demo?m=1&n=11.

500 Server error !

server encounterd an internal error and can't complete your request !
------------------------------------------------------------------------------------------------------


1:是不是已经返回query_string变量了 ?
2:我装的是fedora 4.0,没有动过apache服务器的设置,所有的都是默认的!

esaywang 发表于 2006-9-29 10:30:29

jiangtao9999,你好!帮忙看看!
下面是我的Makefile文件,谢谢!

# Generated automatically from Makefile.in by configure.
# $Id: Makefile.in,v 1.59 2002/03/24 22:20:19 jnelson Exp $

.SUFFIXES:
.SUFFIXES: .o .c
.PHONY: clean mrclean distclean depend all dist



GCC_FLAGS = -Wstrict-prototypes -Wpointer-arith -Wcast-align -Wcast-qual\
-Wtraditional\
-Wshadow\
-Wconversion\
-Waggregate-return\
-Wmissing-prototypes\
-Wnested-externs\
-Wall \
#-Wundef -Wwrite-strings -Wredundant-decls -Winline


srcdir = .
#VPATH = .:./../extras
LDFLAGS =-g,-Wl,-T,/usr/local/arm-elf/lib/elf2flt.ld -elf2flt
LIBS =
CFLAGS = -g -O2 -pipe -Wall -I.

# Change these if necessary

YACC = bison -y
LEX = flex
CC = /usr/local/bin/arm-elf-gcc
CPP = /usr/local/bin/arm-elf-gcc -E
SOURCES = cgi_demo.c\

OBJS =$(SOURCES:.c=.o)

#EXECUTABLE = cgi_demo

all:        cgi_demo

cgi_demo:        $(OBJS)
        $(CC) -o $@ $^ $(LDFLAGS) $(LIBS)
       
clean:
        rm -f $(OBJS) core *.gdb

jiangtao9999 发表于 2006-9-29 18:50:11

首先说句实话,没用过 cgi ,我只能根据我的经验回答你。

你的代码现在不能在 FC 4 里访问,这要先看你的 FC4 是否成功支持 cgi (找个 cgi 的论坛试试)。
因为你的机器显示 500 错误,那应该是服务器的问题。

在目标版上也不能运行,我觉得和 boa 有点关系,可能你的目标版的 apache 不能正常执行 cgi_demo 。
你最好看看目标版上 apache 的 log。

至少你要先保证你的代码可以在你的计算机上能正常运行,才能确定你的目标版有什么问题。

或许是权限问题?你先都设成 777 试试。

esaywang 发表于 2006-9-30 17:56:27

多谢班主了!我到现在还是没有搞定啊!真是失败!

jiangtao9999 发表于 2006-10-1 21:56:40

那就改 perl 等脚本语言吧。这样的话你的目标板的一些需要本地运行的脚本也可以同时支持。 :wink:
如果问题解决不了,那就绕过他。
页: [1]
查看完整版本: 急,uclinux下c语言写cgi的,各位给指导指导吧!