goaheadlinux移植_移植goahead 3.6.5到Linux

本文介绍了如何将Goahead 3.6.5移植到Linux系统,包括下载源码、解压编译、拷贝文件到开发板以及解决在移植过程中遇到的配置文件、CGI路径、证书读取等问题,提供了详细的修改和配置方案。
摘要由CSDN通过智能技术生成

https://blog.csdn.net/richu123/article/details/78112941

一、下载源码

官网:http://embedthis.com/

二、解压编译

# tar -zxvf goahead-3.6.4.tar.gz

# cd goahead-3.6.4

# make CC=arm-linux-gcc ARCH=arm或(configure && make)

编译完成后进入linux-arm-default/bin生成可执行文件

三、拷贝文件

将bin目录下的可执行文件goahead,库文件libgo.so拷贝到开发板

库文件可与goahead文件放在同一目录下,也可拷贝到开发板/lib 目录下

四、问题(红色为我遇到的问题)

问题一(运行错误):

goahead: 0: Can't get host address for host dvr: errno 110

goahead: 0: Can't initialize server. Exiting.

解决办法:修改 /usr/src/goahead-3.1.3-0/src/http.c

# vi src/http.c      // 共有2处相同的代码需修改

=============================================================================

if ((hp = gethostbyname(host)) == NULL) {

error("Can't 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);

ddr = inet_ntoa(intaddr);

websSetIpAddr(ipaddr);

websSetHost(ipaddr);

=============================================================================

改为:

=============================================================================

#if 0

if ((hp = gethostbyname(host)) == NULL) {

error("Can't get host address for host %s: errno %d", host, errno);

return -1;

}

memcpy((char*) &intaddr, (char *) hp->h_addr[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)

{

return -1;

}

memcpy(&sin, &ifr.ifr_addr, sizeof(sin));

ipaddr=inet_ntoa(sin.sin_addr);

#endif

websSetIpAddr(ipaddr);

websSetHost(ipaddr);

=============================================================================

! 修改源码后需重新编译,并下载到开发板

------------------------------------------------------------------------------------------

问题二(运行错误):

goahead: 0: Can't open config file route.txt

goahead: 0: Can't initialize server. Exiting.

解决办法:把 route.txt 拷贝到goahead可执行文件同一目录下。

------------------------------------------------------------------------------------------

问题三(运行错误):

goahead: 0: Can't open config file auth.txt

goahead: 0: Can't load auth.txt

解决办法:在goahead可执行文件同一目录下创建auth.txt。

# touch auth.txt

------------------------------------------------------------------------------------------

问题四:页面存放路径?

答:在goahead可执行文件目录下的web目录,自行创建web目录即可。

# mkdir web

------------------------------------------------------------------------------------------

问题五:CGI存放路径?

答:

1. 修改源码,使错误信息能正确显示(可选)

# vi src/cgi.c +93

error("Cannot find CGI program: ", cgiPath);

修改为:

error("Cannot find CGI program: %s", cgiPath);

! 修改源码后需重新编译,并下载到开发板

2. 创建cgi-bin目录

# mkdir web/cgi-bin

3. 修改配置文件

# vi route.txt

route uri=/cgi-bin dir=cgi-bin handler=cgi

修改为:

route uri=/cgi-bin dir=/opt/linux-arm-default/bin/web handler=cgi     // dir设置为web目录的绝对路径

4. 重启goahead

问题六:goahead:Unable to read key self.key Cannot initialize server. Exiting.

goahead: 0: Unable to read key self.key

goahead: 0: Cannot initialize server. Exiting.

安装 goahead 3.6.3 出现了以上问题

解决办法:

在goahead执行文件目录中找到self.key和self.crt文件拷贝到/etc/goahead下

- 测试

1. 创建 index.html (保存至web/index.html)

GoAhead Test Page

Hello, GoAhead!

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值