急,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 ! 非本版问题『Magic Linux技术支持区 』
移出 :roll:
应该放到嵌入版吧???
你的 apache 服务器有问题?这段代码在 x86 系统上工作正常么?
支不支持库文件,要看程序编写的了,既然他说不支持,那就应该只能重新编译。估计他们的 boa 程序里根本就没有包含调用库的功能。
嵌入式开发,所有东西以精简为主,我觉得使用 cgi 很不明智。
我建议你试试 perl 、php 一类的解释程序,你要用最小的依赖。 谢谢你的精彩回复!
我有点疑惑,就是我的cgi_demo是一个二进制文件,和目标板里有没有这个库有什么关系吗?就象51单片机一样,我包含了许多库,但是51目标板子上里也没有目标库,也照样可是使用库文件啊?
请问我的cgi_demo.c有没有什么问题?
apache服务器是指什么?是指目标板上的吗?<<呵呵,我是菜鸟!>>
x86系统上我没有试过!
进程有点跟不上了,能不能给我讲的详细点!
先谢谢了!节日快乐! 我看了一下了apache服务器,也瞧不出什么问题! 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服务器的设置,所有的都是默认的! 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 首先说句实话,没用过 cgi ,我只能根据我的经验回答你。
你的代码现在不能在 FC 4 里访问,这要先看你的 FC4 是否成功支持 cgi (找个 cgi 的论坛试试)。
因为你的机器显示 500 错误,那应该是服务器的问题。
在目标版上也不能运行,我觉得和 boa 有点关系,可能你的目标版的 apache 不能正常执行 cgi_demo 。
你最好看看目标版上 apache 的 log。
至少你要先保证你的代码可以在你的计算机上能正常运行,才能确定你的目标版有什么问题。
或许是权限问题?你先都设成 777 试试。 多谢班主了!我到现在还是没有搞定啊!真是失败! 那就改 perl 等脚本语言吧。这样的话你的目标板的一些需要本地运行的脚本也可以同时支持。 :wink:
如果问题解决不了,那就绕过他。
页:
[1]