goahead 5.0.0 交叉移植到君正平台, MIPS架构 , goahead学习(一)

记录一下goahead的学习经过:

下载源码:

https://github.com/embedthis/goahead

解压后进入到目录中

执行make  CC=make CC=mips-linux-gnu-gcc ARCH=mips

显示如下表示编译通过:

You can now install via "sudo make ARCH=mips CC=mips-linux-gnu-gcc install" or run GoAhead via: "sudo make run"
To run locally, put linux-mips-default/bin in your path

然后在build/linux-mips-default/ 有编译后生成执行文件

拷贝 goahead 到设备中,

运行后会发现找不到IP, 需要修改源码src/http.c + 2399 行,

修改后如下:

#else
{
    struct hostent  *hp; 
#if 0
    if ((hp = gethostbyname(host)) == NULL) {
        error("Cannot get host address for host %s: errno %d", host, errno);
        return -1;
    }
    memcpy((char*) &intaddr, (char *) hp->h_addr_list[0], (size_t) hp->h_length);
    ipaddr = inet_ntoa(intaddr);
#else
    int sockfd;
    struct sockaddr_in sin; 
    struct ifreq ifr; 
    sockfd = socket(AF_INET, SOCK_DGRAM, 0);
    if(sockfd == -1)
    {    
        return -1;
    }    
    strncpy(ifr.ifr_name, "eth0", IFNAMSIZ);
    ifr.ifr_name[IFNAMSIZ-1] = 0; 
    if(ioctl(sockfd, SIOCGIFADDR, &ifr) < 0) 
    {    
        error("get eth0 ip error\n");
        return -1;
    }    
    memcpy(&sin, &ifr.ifr_addr, sizeof(sin));
    ipaddr = inet_ntoa(sin.sin_addr);
#endif
    websSetIpAddr(ipaddr);
    websSetHost(ipaddr);

修改后重新编译, 在设备中运行,会发现还是报错, 需要一些文件:

这些文件在src/ 下, auth.txt route.txt    self.crt self.key   把这些文件拷贝到goahead 的同级目录下, 此时运行goahead, 则不会报错了, 网页打开还需要一个html 文件,

在goahead同级目录下,新建一个web目录里面拷贝一个html文件, 再用网页打开如图所示(我的index.html内容)表示成功了:

goahead 5.0.0 交叉移植到君正平台, MIPS架构 , goahead学习(一)_第1张图片

 

你可能感兴趣的:(goahead学习笔记)