cgic 库 对makefile的回忆 以及gcc动态链接的复习

我们搭建好了boa服务器后,为了方便使用Common Gateway interface (cgi),我们去网上下了一个简单的相关的c函数库,cgic205里面一共才9个文件


我们按照里面的例子

里面的Makefile文件

CFLAGS=-g -Wall
CC=gcc
AR=ar
RANLIB=ranlib
LIBS=-L./ -lcgic             //动态链接 前面的-L./是什么意思?

all: libcgic.a cgictest.cgi capture //什么意思?

install: libcgic.a            // 可以执行 make install 命令
	cp libcgic.a /usr/local/lib             //链接的库文件默认的路径名,以后用的时候只需 -lcgic 前面的lib不用写,libcgic.a这样写才符合命名规则   
	cp cgic.h /usr/local/include
	@echo libcgic.a is in /usr/local/lib. cgic.h is in /usr/local/include.

libcgic.a: cgic.o cgic.h          //libcgic.a 依赖于 cgic.c 和 cgic.h
	rm -f libcgic.a         
	$(AR) rc libcgic.a cgic.o  //一个归档命令  ar rc libcgic.a
 	$(RANLIB) libcgic.a

#mingw32 and cygwin users: replace .cgi with .exe   // 这里我猜应该是qt中win32?的?看见了mingw32这玩意还有exe

cgictest.cgi: cgictest.o libcgic.a                 //为什么没有将.c 转换成.o 的过程呢?依赖文件.o不是不存在么?make 默认会做这部操作?
	gcc cgictest.o -o cgictest.cgi ${LIBS}   //动态链接 编译

capture: capture.o libcgic.a                           
	gcc capture.o -o capture ${LIBS}

clean:                                          //可以执行 make clean 命令
	rm -f *.o *.a cgictest.cgi capture

或者也可以这样建一个Makefile

test.cgi:cgictest.c cgic.h cgic.c
	gcc -wall cgictest.c cgic.c -o cgitest.cgi



我们打开这个压缩包还发现在cgic.c中有个main但是测试用例cgictest.c中却没有main只有个cgiMain()而在cgitest.c中头文件包含是这样的

#include <stdio.h>
#include "cgic.h"
#include <string.h>

我们要开发一个自己的cgi的话,
只需要实现一个cgiMain()即可,就像capture.c或者cgitest.c那样,cgic的函数库会自动把cgiMain连接到相应的main()上去,功能类似于回调函数哦,但用的是extern 

。。。。。。。

。。。。。。。

赋予其执行CGI代码的权限.把刚才生成的cgitest.cgi放到cgi-bin目录中。此时我们可以在浏览器中输入以下地址进行访问:
http://127.0.0.1/cgi-bin/cgitest.cgi  如果正常的话,应该看到一个网页被展示出来。这样,第一个C语言的CGI程序就运行起来了。
如果浏览器报错,那么多半是配置服务器的时候有些操作没有正确完成。(我配置的是boa因为简单,小)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值