goaheadwebserver363在vxworks55移植

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

1.解压2.me.h将projects下的goahead-vxworks-default-me.h改为me.h,复制到src目录下。3.添加宏定义4.添加src目录下的源文件到工程添加后的图片5.添加头文件添加后的截图6.编译修改1提示//注释的出错。将//注释的去掉。7.编译修改2http.c中代码处提示由于inet_ntoa()函数传入参数不兼容。将源代码staticintsetLocalHost(){structin_addrintaddr;charhost[128],*ipaddr;if(gethostname(host,sizeof(host))0){error(Cannotgethostname:errno%d,errno);return-1;}#ifVXWORKSintaddr.s_addr=(ulong)hostGetByName(host);ipaddr=inet_ntoa(intaddr);websSetIpAddr(ipaddr);websSetHost(ipaddr);#if_WRS_VXWORKS_MAJOR6free(ipaddr);#endif改为staticintsetLocalHost(){structin_addrintaddr;charhost[128];#ifVXWORKScharipaddr[20];#elsechar*ipaddr;#endifif(gethostname(host,sizeof(host))0){error(Cannotgethostname:errno%d,errno);return-1;}#ifVXWORKSintaddr.s_addr=(ulong)hostGetByName(host);/*ipaddr=inet_ntoa(intaddr);*//*typeofformalparameter1isincomplete*/inet_ntoa_b(intaddr,ipaddr);websSetIpAddr(ipaddr);websSetHost(ipaddr);/*#if_WRS_VXWORKS_MAJOR6free(ipaddr);#endif*/8.编译修改3去掉//注释9.编译修改4socket.c中if((fd=socket(AF_INET6,SOCK_STREAM,0))!=-1)使用错误,没有AF_INET6这个定义将其改为AF_INET10.修改bufFree新建的这个工程为应用程序,将这个应用程序添加到主工程后会提示PUBLICvoidbufFree(WebsBuf*bp)这个函数定义了多次,应该是vxworks有这个系统函数,所以将这里的bufFree函数名字改掉,改为PUBLICvoidgo_bufFree(WebsBuf*bp)。所以文件中用到的地方都需要改掉。runtime.c中定义先改定义中的。goahead.h中两处#defineringqClosebufFree,PUBLICvoidbufFree(WebsBuf*bp);http.cjs.c中11.修改me.h将ME_COM_SSL改为0,这里不会用到ssl#ifndefME_COM_SSL#defineME_COM_SSL0#endif修改ME_GOAHEAD_DOCUMENTS#ifndefME_GOAHEAD_DOCUMENTS#defineME_GOAHEAD_DOCUMENTSweb#endif将其改为#ifndefME_GOAHEAD_DOCUMENTS#defineME_GOAHEAD_DOCUMENTS#endif由于vxworks没有根文件系统,需要将index.html文件转化为二进制文件,存放在rom.c的数组里面。这里就需要用到宏定义ME_ROM将其定义为1.#ifndefME_ROM#defineME_ROM1#endif12.生成rom.c要生成rom.c需要几步,先要将/utils目录下的webcomp.c文件编译生成webcomp.exe文件,用这个webcomp.exe将index.html文件生成rom.c文件。编译webcomp.c使用MinGW编译windows下exe,使用webcomp.bat编译生成webcomp.exe可直接使用。但是编译前得先安装好MinGW编译器,可安装绿色版本,然后设置好路径即可。webcomp.bat的编写,是根据webcomp.c代码里面来进行编写的,这个目前没有弄懂,直接引用别人编写好的,webcomp.bat代码如下:gcc-I../-I../osdep/-D__i386__-D_WIN32webcomp.c-owebcomp.exepause点击便可生成webcomp.exe文件。生成rom.c使用web_file_comp3.6.3.bat将src3.6.3\web下文件生成rom.cweb_file_comp3.6.3.bat是用上面生成的webcomp.exe将web目录下的html等文件生成二进制文件放在数组里面,生成rom.cweb_file_comp3.6.3.bat代码的编写如下:@echooffdelwebsfilerom.cREMecho%%awebsfileREM%%a和间不能有空格,否则websfile每行最后都会有一个空格REM导致webrom.c中的websRomPageIndex文件名后也会带一个空格,REM导致找不到文件for/rsrc3.6.3\web%%ain(*.*)doecho%%awebsfile.\src3.6.3\utils\webcomp.exe--stripF:\lzw\prj\vd32_src_web_9_1\vd32_src\goahead\src3.6.3\webwebsfilerom.cdel.\src3.6.3\rom.ccopyrom.c.\src3.6.3\pauseweb_file_comp3.6.3.bat文件中F:\lzw\prj\vd32_src_web_9_1\vd32_src\goahead\src3.6.3\web根据实际放置目录修改。点击即可生成rom.c文件。rom.c截图13.创建任务关键的地方,新版的goahead看了很久不知道函数入口在哪里,里面定义了MAIN的宏定义,但是这个宏定义也不知道怎么使用,直接调用innerMain也有问题,在网上搜索,有下面一句话:goahead.c,这个文件里面有个MAIN(goahead,intargc,char**argv,char**envp),这个玩意,这个东西其实就是goahead函数,然后goahead函数再调用innerMain函数,这个地方其实就是innerMain函数的定义。然后尝试调用goahead()函数,编译也没有问题,其实goahead这个函数就是程序的入口。创建任务,如下。#includegoahead.h#includevxworks.hvoidgoaheadtask(){goahead();}intcreatewebservertask(intpriority){chartGetUsage[]=webser;if((taskSpawn(tGetUsage,priority,0,0x3000,(FUNCPTR)goaheadtask,0,0,0,0,0,0,0,0,0,0))==-1){printf(webservertaskcreateerror);return-1;}return0;}在usrInitApp函数函数中调用createwebservertask函数即可。其他需要注意的是,如果需要将这个工程加入主工程,需要将这个工程生成.a文件,在主工程里面引用即可。14.访问:注意3.6.3不像2.5直接输入ip即可,这里需要将/index.html输入上,具体后面输入什么还有根据你rom.c里的根目录是怎么设置的。

1 / 12
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功