QQ登录

只需一步,快速开始

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 3887|回复: 9

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

[复制链接]
发表于 2006-9-28 18:28:22 | 显示全部楼层 |阅读模式
各位帮帮忙,先谢谢了!帮我看看出了什么问题! 谢谢了!调了一下午了,头昏脑胀的,还是没有结果!
本来打算用库文件写,听厂家技术支持说板子里的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 !
发表于 2006-9-28 19:01:23 | 显示全部楼层
非本版问题『Magic Linux技术支持区 』
移出
回复

使用道具 举报

发表于 2006-9-28 21:42:12 | 显示全部楼层

应该放到嵌入版吧???

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


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

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

使用道具 举报

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

使用道具 举报

 楼主| 发表于 2006-9-29 09:30:13 | 显示全部楼层
我看了一下了apache服务器,也瞧不出什么问题!
回复

使用道具 举报

 楼主| 发表于 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服务器的设置,所有的都是默认的!
回复

使用道具 举报

 楼主| 发表于 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
回复

使用道具 举报

发表于 2006-9-29 18:50:11 | 显示全部楼层
首先说句实话,没用过 cgi ,我只能根据我的经验回答你。

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

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

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

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

使用道具 举报

 楼主| 发表于 2006-9-30 17:56:27 | 显示全部楼层
多谢班主了!我到现在还是没有搞定啊!真是失败!
回复

使用道具 举报

发表于 2006-10-1 21:56:40 | 显示全部楼层
那就改 perl 等脚本语言吧。这样的话你的目标板的一些需要本地运行的脚本也可以同时支持。
如果问题解决不了,那就绕过他。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

GMT+8, 2024-11-17 00:19 , Processed in 0.181584 second(s), 16 queries .

© 2021 Powered by Discuz! X3.5.

快速回复 返回顶部 返回列表