GoAhead移植配置新手入门 arm-linux

环境: PC机操作系统RedHat Linux 9.0 ARM-LINUX开发环境 webs218.tar.gz压缩包 armv4l-unkown-linux-gcc交叉编译器 UP-NETARM2410-S嵌入式实验平台 PC机Pentium500以上,硬盘40G以上,内存128M以上

1. 新建一个目录,将这个实验所需要用到的压缩包复制进去并解压。 从网站www.goahead.com下载压缩包webs218.tar.gz,并且解压。 tar xvzf webs218.tar.gz        解压缩后的文件夹是 ws031202,之后进入该文件夹下的LINUX。 #cd ws031202/LINUX

2.    执行第一步:修改LINUX目录下的Makefile 文件 因为GoAhead默认是以x86体系结构来构造的,因此这里需要把Makefile文件中的编译器更改为能够在ARM体系结构下运行的交叉编译器。在Makefile文件开头添加如下两个变量: CC=armv4l-unknown-linux-gcc

AR=armv4l-unknown-linux-ar

之后将该文件中所有的cc都更改为$(CC)即可,在最后面一行。这样在Makefile文件中使用到的编译器就是开发板所使用的交叉编译器了。

3. 执行第二步:

修改LINUX目录下的main.c

文件

  

由于该开发板本身没有hostname,例如在开发板下输入如下命令:

hostname

可以看到none,说明开发板不存在hostname。

因此在main.c下的initWebs( )函数中使用到的gethostbyname

函数无用。所以把如下内容屏蔽,并在之后直接将IP地址写入intaddr。

注释内容:

/*

if (gethostname(host, sizeof(host)) < 0) {

error(E_L, E_LOG, T("Can't get hostname"));

return -1;

}

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

error(E_L, E_LOG, T("Can't get host address"));

return -1;

}

memcpy((char *) &intaddr, (char *) hp->h_addr_list[0],

(size_t) hp->h_length);

*/

添加内容:

intaddr.s_addr=inet_addr("192.168.0.115");

注:括号内的内容为开发板的IP地址,此处实验台的IP地址为192.168.0.115。

4编译

完成如上操作之后,准备在LINUX目录下进行编译:

make clean

make

之后可以看到如下内容:

……

-DWEBS -DUEMF -DOS="LINUX" -DLINUX -DUSER_MANAGEMENT_SUPPORT -DDIGEST_ACCESS_SUPPORT   -I.. \

main.o libwebs.a  

main.o(.text+0x539): In function `websGetCgiCommName':

/arm2410s/ws031202/LINUX/main.c:325: the use of `tempnam' is dangerous, better use `mkstemp'

使用ls命令就可以看到生成的可执行程序webs

5. 运行并测试

使用minicom进入开发板,并且将宿主机的相应目录mount到开发板的

host目录下:

mount t nfs 192.168.0.121:/arm2410s /host

之后进入LINUX目录,并且运行webs程序:

cd /host/ws031202/LINUX

./webs &

注:1、./webs& 中的&参数表示该程序在后台持续执行。

之后进入宿主机打开浏览器,并且在地址栏输入192.168.0.115

可以看到home.asp页面

6 测试CGI

好,现在让我们用 C 语言写一个神圣的 CGI 程序 -- Hello,World!

vi hello.c # 编辑源文件

// Begin

#include
main() {
printf("Content-type:text/html\n\n");
printf("Hello,World!");
}

// End

armv4l-unknown-linux-gcc -o hello hello.c # 编译

将该程序放在 Web 服务器的 cgi-bin 目录下,然后通过以下方式访问:

http://www.server.com/cgi-bin/hello

这将在浏览器里打印出 Hello,World!

这就算得上是一个 CGI 程序了,是不是很简单?^_^ 第一句 printf() 是打印头信息,让 Web 浏览器知道以下打印的数据是什么类型的数据,本例子中指定了 text/html 类型,即 html 文档,所以下面的那句 printf() 打印的内容就会像我们写网页内容一样在浏览器上显示出来。

7移植

 将webs复制到新建文件夹goahead中的bin中(如没有bin可以建立文件夹);

   把ws031202下的web文件夹拷贝到goahead文件夹下

将goahead下载到目标板;

进入执行bin下的webs

./webs&

还不懂留意

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/13771794/viewspace-629401/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/13771794/viewspace-629401/

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值