CGI的認(rèn)識(shí)CGIC的移植

      網(wǎng)友投稿 3352 2025-03-31

      寫在最前面

      華清遠(yuǎn)見教育集團(tuán)

      15年專注高端IT培訓(xùn)

      做良心教育,做專業(yè)教育,做受人尊敬的職業(yè)教育

      創(chuàng)客學(xué)院官網(wǎng):http://www.makeru.com.cn/

      華清遠(yuǎn)見創(chuàng)客學(xué)院嵌入式課程鏈接:http://www.makeru.com.cn/emb

      華清遠(yuǎn)見創(chuàng)客學(xué)院物聯(lián)網(wǎng)課程鏈接:http://www.makeru.com.cn/iot

      概述

      CGI 是Web 服務(wù)器運(yùn)行時(shí)外部程序的規(guī)范,按CGI 編寫的程序可以擴(kuò)展服務(wù)器功能。CGI 應(yīng)用程序能與瀏覽器進(jìn)行交互,還可通過數(shù)據(jù)庫API 與數(shù)據(jù)庫服務(wù)器等外部數(shù)據(jù)源進(jìn)行通信,從數(shù)據(jù)庫服務(wù)器中獲取數(shù)據(jù)。格式化為HTML文檔后,發(fā)送給瀏覽器,也可以將從瀏覽器獲得的數(shù)據(jù)放到數(shù)據(jù)庫中。幾乎所有服務(wù)器都支持CGI,可用任何語言編寫CGI,包括流行的C、C ++、VB 和Delphi 等。CGI 分為標(biāo)準(zhǔn)CGI 和間接CGI兩種。標(biāo)準(zhǔn)CGI 使用命令行參數(shù)或環(huán)境變量表示服務(wù)器的詳細(xì)請(qǐng)求,服務(wù)器與瀏覽器通信采用標(biāo)準(zhǔn)輸入輸出方式。間接CGI 又稱緩沖CGI,在CGI 程序和CGI 接口之間插入一個(gè)緩沖程序,緩沖程序與CGI 接口間用標(biāo)準(zhǔn)輸入輸出進(jìn)行通信。

      目的:本文從學(xué)習(xí)的角度來認(rèn)識(shí)CGI。重點(diǎn)是對(duì)整體框架的理解,和對(duì)CGIC在嵌入式環(huán)境的移植。

      框圖

      CGI程序的工作一般就是接收表單數(shù)據(jù),進(jìn)行數(shù)據(jù)處理,最后根據(jù)處理結(jié)果生成新的頁面返回給瀏覽器。

      CGIC

      CGIC是一個(gè)功能比較強(qiáng)大的支持CGI開發(fā)的標(biāo)準(zhǔn)C庫,并支持Linux, Unix 和Windows等多操作系統(tǒng)

      源碼分析

      用戶操作流程分析

      用戶通過客戶端應(yīng)用(瀏覽器)向web服務(wù)發(fā)送一個(gè)get請(qǐng)求,web服務(wù)器返回一個(gè)默認(rèn)的靜態(tài)html頁面;用戶想在這個(gè)基礎(chǔ)上進(jìn)一步操作,比如用戶登錄,需要填寫 '用戶名-密碼' 吧,這樣提交的信息就以form表單的形式從web服務(wù)器,再通過CGI接口向服務(wù)器上的應(yīng)用發(fā)送。CGI就是這么一個(gè)中間機(jī)制,這里簡單理解就是講前端產(chǎn)生的html語言轉(zhuǎn)換成應(yīng)用層的c語言,實(shí)現(xiàn)交互。

      CGIC的移植過程

      源碼移植

      1.下載源碼

      http://www.boutell.com/cgic/

      2.解壓

      root@linux:cgi_test# tar -xvf cgic205.tar.gz

      3.修改交叉編譯環(huán)境

      root@linux:cgic205# cd ./cgic205

      root@linux:cgic205# vim Makefile

      CC=arm-none-linux-gnueabi-gcc

      AR=arm-none-linux-gnueabi-ar

      RANLIB=arm-none-linux-gnueabi-ranlib

      #gcc cgictest.o -o cgictest.cgi ${LIBS}

      $(CC) $(CFLAGS) cgictest.o -o cgictest.cgi ${LIBS}

      #gcc capture.o -o capture ${LIBS}

      $(CC) $(CFLAGS) capture.o -o capture ${LIBS}

      4.編譯cgi源碼

      root@linux:cgic205# make

      5.將capture和cgictest.cgi拷貝到nfs共享根目錄下的boa/cgi-bin/目錄中

      root@linux:cgic205# ls

      capture ? ?cgic.c ? ? cgic.o ? ? ? ?cgictest.o ? Makefile

      capture.c ?cgic.h ? ? cgictest.c ? ?libcgic.a ? ?readme.txt

      capture.o ?cgic.html ?cgictest.cgi ?license.txt ?support.txt

      root@linux:cgic205# cp capture cgictest.cgi /nfs/rootfs/boa/cgi-bin/

      root@linux:cgic205#

      6.測試效果

      <1>開發(fā)板上

      [root@farsight boa]# pwd

      /boa

      [root@farsight boa]# ./boa

      <2>瀏覽器輸入url ?http://192.168.9.9/cgi-bin/cgictest.cgi

      進(jìn)一步項(xiàng)目移植

      1.添加新的文件到cgi源碼目錄

      root@linux:cgi# cp -rf cgi_src-05-30-17-00 ~/cgi_test/cgic205/

      root@linux:cgi# cd /root/cgi_test/cgic205/cgi_src-05-30-17-00

      root@linux:cgi_src-05-30-17-00# pwd

      /root/cgi_test/cgic205/cgi_src-05-30-17-00

      root@linux:cgi_src-05-30-17-00# cp m0_* ../

      root@linux:cgi_src-05-30-17-00# cp sem.h env1.c login.c setEnv.c data_global.h ../

      2.修改Makefile編譯規(guī)則,把剛才那些文件添加到Makefile編譯項(xiàng)

      root@linux:cgi_src-05-30-17-00# cd ..

      root@linux:cgic205# vim Makefile

      CC=arm-none-linux-gnueabi-gcc

      AFLAGS=-Wall -g

      LDFLAGS= -L ./lib

      OBJS= capture.cgi m0_beep.cgi m0_fan.cgi m0_led.cgi \

      m0_seg.cgi env1.cgi setEnv.cgi

      run:$(OBJS)

      $(OBJS):%.cgi:%.c

      $(CC) $(AFLAGS) $< cgic.c -o $@ $(LDFLAGS)

      install:

      $(CC) $(AFLAGS) login.c -o login.cgi

      mv *.cgi ./out/

      cp ?./out/*.cgi ?/nfs/rootfs/boa/cgi-bin

      .PHONY:clean

      clean:

      rm ./out/*.cgi

      3.編譯并將目標(biāo)文件移動(dòng)到nfs根目錄下

      CGI的認(rèn)識(shí)與CGIC的移植

      root@linux:cgic205# make

      root@linux:cgic205# make install

      4.在/nfs/rootfs/boa/www下添加需要的html文件

      root@linux:boa# ls www/

      choose.html ?env2.html ?index.html ?m0_2.html ? main2.html ?video1.html

      env1.html ? ?images ? ? m0_1.html ? main1.html ?pice ? ? ? ?video2.html

      root@linux:boa# cp -rf www/* /nfs/rootfs/boa/www/

      5.查看效果

      用戶通過瀏覽器訪問開發(fā)板IP,web服務(wù)器返回一個(gè)默認(rèn)頁面

      用戶通過輸入欄,填寫用戶名密碼(提交表單),web服務(wù)器通過cgi接口返回又一個(gè)頁面

      擴(kuò)展學(xué)習(xí)-cgic官網(wǎng)學(xué)習(xí)教程:https://boutell.com/cgic/

      web前端

      版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實(shí)的內(nèi)容,請(qǐng)聯(lián)系我們jiasou666@gmail.com 處理,核實(shí)后本網(wǎng)站將在24小時(shí)內(nèi)刪除侵權(quán)內(nèi)容。

      版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實(shí)的內(nèi)容,請(qǐng)聯(lián)系我們jiasou666@gmail.com 處理,核實(shí)后本網(wǎng)站將在24小時(shí)內(nèi)刪除侵權(quán)內(nèi)容。

      上一篇:平均:不求人Excel函數(shù)(03)
      下一篇:怎么可以將紅色字全弄成標(biāo)題一
      相關(guān)文章
      亚洲三级视频在线观看| 亚洲成人午夜在线| 亚洲激情黄色小说| 亚洲av永久无码精品国产精品| 亚洲毛片不卡av在线播放一区| 久久亚洲中文字幕无码| 亚洲精华国产精华精华液网站| 亚洲人成网站免费播放| 亚洲日韩乱码中文字幕| 亚洲精华液一二三产区| 黑人粗长大战亚洲女2021国产精品成人免费视频| 国产亚洲精品成人AA片| 亚洲午夜精品一区二区麻豆| 亚洲国产午夜精品理论片在线播放| 亚洲精品无码高潮喷水A片软| 国产99在线|亚洲| 亚洲综合色一区二区三区| 亚洲中文字幕无码亚洲成A人片| 亚洲色大成网站www尤物| 亚洲高清乱码午夜电影网| 国产精品日本亚洲777| 亚洲精品老司机在线观看| 伊人婷婷综合缴情亚洲五月| 国产亚洲av片在线观看18女人| 在线亚洲午夜理论AV大片| 国产亚洲福利精品一区| 亚洲视频在线观看免费| 亚洲欧洲国产精品久久| 亚洲综合久久一本伊伊区| 亚洲人成网站免费播放| 亚洲AV无码一区二三区| 在线亚洲午夜理论AV大片| 亚洲av无码潮喷在线观看| 亚洲综合色一区二区三区小说| 亚洲伦理一二三四| 亚洲av无码一区二区三区四区| 亚洲国产精品狼友中文久久久| 亚洲一区爱区精品无码| 亚洲一区二区三区首页| 亚洲乱码日产精品BD在线观看| 亚洲精品成a人在线观看☆|