linux+goahead+cgi cgi源代码如何编译?

问题描述

最近在玩goahead,嵌入式开源webserver,代码中有一cgitest.c的cgi例子代码,不知道如何编译,仿goahead编译(在标准FC8上)cc-g-Wall-DWEBS-DUEMF-DOS="LINUX"-DLINUX-DUSER_MANAGEMENT_SUPPORT-DDIGEST_ACCESS_SUPPORT-I../..-ccgitest.c-ocgitest.occ-ocgitest.cgicgitest.o编译完成之后,拷贝cgitest.cgi到ws031202/web/cgi-bin,跑起./webs,用IE连接http://192.168.13.198/cgi-bin/cgitest.cgi,服务器端出现Segmentationfault,gdb调试信息如下:(gdb)where#00x0059d12binstrlen()from/lib/libc.so.6#10x0804a391inbstrdup(s=0xffffffff<Address0xffffffffoutofbounds>)at../balloc.c:461#20x080497afinwebsGetCgiCommName()atmain.c:328#30x0804aa07inwebsCgiHandler(wp=0x9798c48,urlPrefix=0x9796bd8"/cgi-bin",webDir=0x9796bf0"",arg=0,url=0x97994d0"/cgi-bin/test.cgi",path=0x9799510"/cgi-bin/test.cgi",query=0x9797288"")at../cgi.c:185#40x0804e8c8inwebsUrlHandlerRequest(wp=0x9798c48)at../handler.c:279#50x0805778finwebsGetInput(wp=0x9798c48,ptext=0xbfb40f40,pnbytes=0xbfb40f38)at../webs.c:699#60x08057090inwebsReadEvent(wp=0x9798c48)at../webs.c:362#70x08056fedinwebsSocketEvent(sid=1,mask=2,iwp=158960712)at../webs.c:319#80x0805157dinsocketDoEvent(sp=0x97972a0)at../sockGen.c:933#90x08051424insocketProcess(sid=1)at../sockGen.c:875#100x080492d9inmain(argc=1,argv=0xbfb41074)atmain.c:96好像是strlen的问题。请教cgi高手代码应该如何编译,谢谢!如果能够给出Makefile例子,那就更好了。

解决方案

解决方案二:
cgi的编译是不是和普通应用程序的编译是一样的?
解决方案三:
一样吧
解决方案四:
你的CGI沒有處理無效的input吧。
解决方案五:
该回复于2010-02-23 09:42:31被版主删除
解决方案六:
是吗好!
解决方案七:
啊?你怎么编译的啊?直接gcc编译生成默认的a.out放到你说的路径直接就能看见一对你的机器的相关信息了就是那一堆printf函数的结果啊
解决方案八:
该回复于2010-11-11 10:08:05被版主删除
解决方案九:
web文件夹下,有个cgi-bin文件夹,把里面滴代码编译,即可测试!
解决方案十:
LZ把在移植的步骤中不要把tempnam改成mkstemp函数。应该就可以了。

时间: 2024-08-03 11:23:05

linux+goahead+cgi cgi源代码如何编译?的相关文章

在Ubuntu下获取Android4.0源代码并编译

搞了几个月的Android应用开发,勉强算是个Android开发者了吧,Android本就是开源的,还是把源代码下载下来自己编译一下,看看是个什么东西,出于好奇,和以后的职业发展,开始了无休止的Android研究过程... 这篇连载博客用来记录我从下载源代码到编译的整个过程,开始百度和谷歌了无数资料,遇到了不少的问题,以总结出来,希望对后来者有所帮助,于我也算是一种总结吧 接下来首先开发获取最新的Android源代码,目前最新版本是4.0 要获取源代码,当然还得先看官方文档怎么说http://s

在linux生存mysql.so的时候 编译不通过

问题描述 在linux生存mysql.so的时候 编译不通过 我想生成mysql.so文件让他被PHP调用 过程是这样的 1进入php源代码目录:# cd /usr/ChenShao/php-5.3.1/ 2.再进入要添加的mysql扩展源码目录:# cd ext/mysql/ 2.调用已经编译好的php里面的phpize:# /usr/local/php5/bin/phpize 3.然后configure:# ./configure --with-php-config=/usr/local/p

Linux 2.6.19.x 内核编译配置选项简介

Linux 2.6.19.x 内核编译配置选项简介 版权声明 本文作者是一位自由软件爱好者,所以本文虽然不是软件,但是本着 GPL 的精神发布.任何人都可以自由使用.转载.复制和再分发,但必须保留作者署名,亦不得对声明中的任何条款作任何形式的修改,也不得附加任何其它条件.您可以自由链接.下载.传播此文档,但前提是必须保证全文完整转载,包括完整的版权信息和作译者声明. 其他作品 本文作者十分愿意与他人共享劳动成果,如果你对我的其他翻译作品或者技术文章有兴趣,可以在如下位置查看现有作品的列表: 金步

kafka linux下java客户端的详细编译步骤

问题描述 kafka linux下java客户端的详细编译步骤 求关于kafka在Linux 命令行下的java客户端详细编译步骤,网上直看到些程序代码但是具体编译过程很少

linux包编译失败-Linux安装R语言,报编译失败!

问题描述 Linux安装R语言,报编译失败! Error:compilation failed for package 'Rserve' 说包编译失败! 貌似说版本问题,于是换了几个版本还是不行! R六个包! 第一个包是tar.gz解压出来进入目录./configure make make install的! 之后的包都是 R CMD INSTALLL XXXX.tar.gz来执行命令的! 同事在第一台上装成功了,第二台我装就没有成功,两台Linux系统版本也不一样!

关于Linux开源项目基础组件make编译流程

 关于Linux开源项目基础组件make编译流程 很多Linux开源项目都会用到编译出可执行文件的make,这个是有一套流程的. 首先,GNU构建系统:https://en.wikipedia.org/wiki/GNU_build_system 使用Autotool来编译和管理整个产品的生产流程. 就是下面这张图: 这里面需要先了解make和makefile make:https://en.wikipedia.org/wiki/Make_(software) makefile:https:/

jvm的在连接阶段对java类的验证和编译器对源代码的编译有什么区别

问题描述 jvm的在连接阶段对java类的验证和编译器对源代码的编译有什么区别 问题补充:beneo 写道 解决方案 引用具体的话,你可以看看jvm spec,你不愿看的话,就看看http://rednaxelafx.iteye.com/ 的博客,如果还看不懂的话,就去问http://rednaxelafx.iteye.com/大大P.S. 其实该走的路我都告诉你了,你为何不往前踏一步呢?解决方案二:引用编译器对源代码的编译有什么区别 java source code -> java class

vfy-用eclipse运行下载好的android源代码正常编译,但在模拟器上进行操作时提示xx已停止运行

问题描述 用eclipse运行下载好的android源代码正常编译,但在模拟器上进行操作时提示xx已停止运行 用eclipse运行下载好的android源代码,可以正常编译,但在模拟器上进行操作时提示xx已停止运行 提示如下: could not find method org.apache.james.mime4j.field.adress.AddressList.parse,referenced from method com.android.email.core.mail.Address.

Linux(CentOS)下PHP扩展PDO编译安装的方法_php技巧

本文讲述了Linux(CentOS)下PHP扩展PDO编译安装的方法.分享给大家供大家参考,具体如下: 这里是以 CentOS 为例,红帽系列的 Linux 方法应该都是如此,下面就详细说明步骤,在这里严重鄙视哪些内容啰嗦.说的杂七杂八的有关 PDO 编译安装的文章. 1.进入 PHP 的软件包 pdo 扩展目录中(注:不是 PHP 安装目录) [root@gamejzy /]# cd /tmp/lamp/php-5.3.19/ext/pdo_mysql/ 注:我的 php 软件包在 /tmp/

Lua中的源代码预编译浅析_Lua

尽管Lua被称为是一种解释型的语言,但Lua确实允许在运行源代码之前,将源代码预编译成一种中间形式(类比Python的.pyc).区别解释型语言的主要特征在于编译器是否是语言运行时库的一部分,即是否有能力执行动态生成的代码(Lua可以通过dofile执行Lua代码).  其实,dofile的核心功能是由loadfile完成的,可以这样来定义dofile: loadfile并不是执行代码,而只是编译,返回一个函数,由dofile执行. 如果多次运行一个文件,可以只调用一次loadfile,重复调用