获取最新版本的源码
可以去官网Embedded Web Server - GoAhead | IoT Device Management | Embedthis
或者Gitee 获取Goahead源码(yysy,那个官网我没搞明白怎么拉取源码)
大概的文件夹分布是这样的,一开始拉取是没有build文件夹的,在后续执行make语句会自动生成,主要存放Goahead服务器的执行文件和相关配置文件。
最主要的是src文件夹和projects文件夹,前者是存放Goahead源码的,后者则是一些makefile文件后缀为 .mk ,可以通过make -f projects/对应系统.mk来进行编译
配置、编译、运行
我们先对源码进行配置
进入file.c文件,websDocuments全局变量用于设置web服务器的文件路径,websIndex全局变量用于设置默认页面
进入fileHandler函数,画红框的区域就是重定向的位置,可以实现输入IP地址直接重定向到默认页面,非常方便
进入http.c文件下websRedirect函数,主要针对host的修改
在http.c文件下setLocalHost函数中,我们修改ipaddr这个变量用于设置web服务器的host,也可以通过获取本机ip地址的函数去给这个变量赋值
进入Goahead文件夹下
cd GoAhead/
进行编译,这边使用的是ubuntu系统,不带任何参数会默认使用goahead-linux-default.mk,如果你需要进行交叉编译的话,必须修改相应的.mk文件,指定好ARCH、CC、AR
make all
复制我们需要的文件放到编译完成的bin路径下
cp src/auth.txt src/route.txt src/self.* build/linux-x64-default/bin/
cd build/linux-x64-default/bin/
./goahead -v /home/endy/nfsroot/
这边还要再指定一些文件路径才行,应该是源码当中哪里没配置好,有知道的大佬可以帮我指正一下,非常感谢。
然后去浏览器输入我们的ip地址就可以看到默认界面了
后续开发
主要关注goahead.h文件中的struct webs结构体,这个结构体包含了很多的信息,对后续的开发非常有帮助,例如method用于保存前端的GET、PUT、POST