嵌入式WEB之goahead基本工程

一、简介

嵌入式web服务器的搭建,这里使用的是 goahead-5.2.0版本

二、虚拟机下编译

1.下载源码

1.官方下载地址
2.官方文档
3.蓝秦云下载

2. 解压

输入命令进行解压 tar -zxvf goahead-5.2.0-src.tgz
在这里插入图片描述

3.编译

在源码根目录直接输入make进行编译,编译出的文件在build目录下
在这里插入图片描述

三、基本工程创建

1. 目录结构

在这里插入图片描述

2. 测试代码

#include    "goahead.h"
#include    "js.h"

static int finished = 0;


#if ME_UNIX_LIKE
static void sigHandler(int signo)
{
    finished = 1;
}
#endif

void initPlatform(void)
{
#if ME_UNIX_LIKE
    signal(SIGINT, sigHandler);
    signal(SIGTERM, sigHandler);
    signal(SIGKILL, sigHandler);
    #ifdef SIGPIPE
        signal(SIGPIPE, SIG_IGN);
    #endif
#elif ME_WIN_LIKE
    _fmode=_O_BINARY;
#endif
}

static void logHeader(void)
{
    char    home[ME_GOAHEAD_LIMIT_STRING];

    getcwd(home, sizeof(home));
    logmsg(2, "Configuration for %s", ME_TITLE);
    logmsg(2, "---------------------------------------------");
    logmsg(2, "Version:            %s", ME_VERSION);
    logmsg(2, "BuildType:          %s", ME_DEBUG ? "Debug" : "Release");
    logmsg(2, "CPU:                %s", ME_CPU);
    logmsg(2, "OS:                 %s", ME_OS);
    logmsg(2, "Host:               %s", websGetServer());
    logmsg(2, "Directory:          %s", home);
    logmsg(2, "Documents:          %s", websGetDocuments());
    logmsg(2, "Configure:          %s", ME_CONFIG_CMD);
    logmsg(2, "---------------------------------------------");
}


int main()
{
    char *route, *auth, *endpoint;
    route = "web_cfg/route.txt";
    auth = "web_cfg/auth.txt";
    endpoint = "*:8080";

    logSetPath("stdout:2"); //设置日志输出
    //websSetBackground(1); //程序后台运行
    //websSetDebug(1); //设置是否以debug模式运行
    //logSetPath(5); //设置打印等级
    //设置工作目录
    char    *documents = "web"; //设置网页路径

     if (chdir("./") < 0) {  //设置工作路径
        error("Cannot change directory to %s", "./");
        exit(-1);
    }

    initPlatform();
    if (websOpen(documents, route) < 0) {
        error("Cannot initialize server. Exiting.");
        return -1;
    }
    logHeader();  //程序运行的初始打印
    if (websLoad(auth) < 0) {
        error("Cannot load %s", auth);
        return -1;
    }
    if (websListen(endpoint) < 0) {  //接听用户输入的ip和端口号
            return -1;
    }

    if (websGetBackground()) {  //获取是否在后台运行
        if (daemon(0, 0) < 0) { //守护进场
            error("Cannot run as daemon");
            return -1;
        }
    }
    websServiceEvents(&finished);
    logmsg(1, "Instructed to exit\n");
    websClose();
    return 0;
}

四、x86平台下测试

1. 程序执行

在这里插入图片描述
找不到动态库文件

error while loading shared libraries: libgo.so: cannot open shared object file: No such file or directory

添加脚本

export LD_LIBRARY_PATH=./lib
./goahead_test

在这里插入图片描述

2. 执行结果

在这里插入图片描述

五、代码工程

工程已经实现文件的上传,文件的下载,登录,作为基础工程进行开发,有需要带走

项目工程gitee地址

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值