Webサーバgoaheadの移植


1.goahead-3.1.1-0-srcをオンラインでダウンロードします.tgzパッケージ
2.解凍
tar -zxvf goahead-3.1.1-0-src.tgz
3.コンパイル
cd goahead-3.1.1-0
make CC=arm-none-linux-gnueabi-gcc ARCH=arm
linux-arm-default/binでgoaheadを見つけることができます
4.テスト修正
実行./goaheadテスト
質問1:
goahead: 0: Can't get host address for host dvr: errno 11
goahead: 0: Can't initialize server. Exiting.

出典:goahead-3.1.1-0srchttp.cファイルのsetLocalHost関数
    if ((hp = gethostbyname(host)) == NULL) {	//MHB 2013-10-22  
        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);
	ipaddr = inet_ntoa(intaddr);	// ipaddr
    websSetIpAddr(ipaddr);			
    websSetHost(ipaddr);

変更:
#if 0
    if ((hp = gethostbyname(host)) == NULL) {	//MHB 2013-10-22
        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);
	ipaddr = inet_ntoa(intaddr);
#else	//MHB 2013-10-22  ip  (ipv4)
	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);

質問2:
goahead: 0: Can't open config file route.txt
goahead: 0: Can't initialize server. Exiting.

解決方法:コピーgoahead-3.1.1-0srcroute.txtファイルgoahead同ディレクトリ下
問題3:Webページの保存場所の解決方法:goaheadの同じディレクトリの下のWebディレクトリの下にWebページを保存し、Webディレクトリが手動で作成されます.
ブラウザを開いてipアドレスを入力