A:我现在编写的.cgi程序要与uclinux上的其他进程进行通信, 仅将其交叉编译好的.cgi程序拷贝到uclinux目录下的romfs/home/httpd/cgi-bin/下,程序根本运行不起来,故后来直接把整个cgic205直接移植到uclinux上,还是不行,不知道是makefile没修改好,还是cgic205根本不能这样移植,请帮忙分析分析!

  B:cgic205是为c语言编写cgi的函数库,如果uclinux系统本身没有配置对cgi的支持,仅把库搬上去好像没什么用吧?!

  我只知道在配置boa web server的时候可以实现对cgi的支持!

  至于其它的方法,如将cgi支持单独添加到uclinux系统中,我还真的不知道是否能够实现!

  A:我可能没表达清楚。我是想利用cgic205这个函数库和uclinux里的库函数共同编制.cgi程序,所以我须把cgic205先移植到uclinux上,我把cgic205添加到用户程序里,当然还是要boa来访问。移植后,cgic205自带的cgictest.cgi可以执行,而我自编的.cgi程序在web浏览器上却显示: 500 Server Error.

  不知道我的这个办法可不可行,因为我的确需要这两个库的支持,却不知道实现这一过程是不是有一些特别注意的地方。谢谢。

  B:cgic205自带的cgictest.cgi可以执行

  该测试程序是在uclinux系统环境下执行的吗?如果是的话,则表明该库已经可以使用!

  >>而我自编的.cgi程序在web浏览器上却显示: 500 Server Error

  确定你的程序是用交叉编译工具编译的吗?(如我用的交叉编译命令是:arm-elf-gcc -elf2flt mycgi.c -o mycgi)

  A:cgic205的cgictest.cgi是在uclinux下执行的。

  因为我把cgic205移到uclinux的user/下,所以编译器已经都默认为我编译uclinux程序的交叉编译器了。就是不知道,我自编的程序有没有找到uclinux的函数库。

  cgic205里的makefile如下:

  #CFLAGS=-g -Wall

  #LDFLAGS = -Wl,-elf2flt

  #CC=arm-elf-gcc

  #AR=arm-elf-ar

  RANLIB=$(CROSS)ranlib

  LIBS=libcgic.a

  all: $(LIBS) run.cgi capture

  install: $(LIBS)

  cp $(LIBS) $(INSTALLDIR)

  cp cgic.h $(INSTALLDIR)

  @echo $(LIBS) is in $(INSTALLDIR). cgic.h is in $(INSTALLDIR).

  $(LIBS): cgic.o cgic.h

  rm -f $(LIBS)

  $(CROSS)ar rc $@ cgic.o

  $(RANLIB) $@

  #mingw32 and cygwin users: replace .cgi with .exe

  run.cgi: run.o

  $(CC) $(CFLAGS) $(LDFLAGS) -o $@ $^ $(LIBS) $(LDLIBS$(LDLIBS_$@))

  capture: capture.o

  $(CC) $(CFLAGS) $(LDFLAGS) -o $@ $^ $(LIBS) $(LDLIBS$(LDLIBS_$@))

  romfs:

  $(ROMFSINST) /home/httpd/cgi-bin/run.cgi

  clean:

  -rm -f *.o *.a run.cgi capture

  B:测试程序cgictest.cgi确定是需要cgic205库才能运行的吗?如果是,则表明cgic205应该已经正确移植到uclinux中了!

  然后就是测试你自己的cgi程序了:写一个也是确定需要cgic205库才能运行的测试程序,然后在本地先用交叉编译工具编译好,再然后直接将交叉编译生成的可执行文件烧写到板子的cgi-bin目录下,再测试是否可以正常访问!

  不知你的步骤是不是这样?

  也就是如果我的程序只需要cgic205库,那么程序执行没问题,但是如果还要用uclinux的uclibc函数,就出现错误

  好像不是这个意思!

  (1) 在boa成功配置之后,其本身就已经支持cgi了!其实其本身的cgi支持应该已经可以满足很多常规的需求了!

  你可以先做这个测试,保证它能正常工作才是第一要务!!!

  测该部分时,最简单的cgi程序即可!

  (2) 其次再考虑cgic205库(该库仅是上述功能的一个扩展和延伸):

  该库我没用过,不过我认为引入该库的目的无非就是要简化一些cgi的编程而已(比如说他将一些常规操作集成到一个函数里,这样直接调用一个库函数就可能少写许多代码等等,当然,它也可能提供一些新的功能比较强大的函数,但这些库函数不都是用基本的语法完成的吗!)

  测该部分时,确保程序中有用到cgic205库所提供的库函数等等!