最近拉了个 TinyHttpd 的工程下来,不过好像各个都有些改动,最后挑了篇阅读量最多的。工程也是从这里面给的链接下载的。
参考自:https://blog.csdn.net/jcjc918/article/details/42129311
拿下来在编译运行前,按这里说的,需要有些修改:
1、Makefile 文件,如果直接执行 make 的话,你会遇到这个错误:cannot find -lsocket。
解决方法简单说就是在 linux 系统中没有这样一个库,而且这个库在 linux 中的实现位于 libc 中,编译时被默认包含,所以可以直接在 Makefile 中去掉 -lsocket。
2、在 htdocs 文件下,有 cgi 的程序和 html 代码,cgi 是用 perl 写的,但文件中声明的 perl 执行程序位置在我这是错的,我这里 perl 脚本位于 /usr/bin 中(通过终端命令 which perl 可以查看),所以把 cgi 文件中的第一行改为:#!/usr/bin/perl -Tw
随后,直接通过命令 make 编译,然后 ./httpd 运行生成可执行文件。在浏览器输入 localhost:端口号 便能看到网页。
但我浏览器确啥也看不到,后面通过百度,看到有人说
这是因为index.html文件权限的问题,需要通过命令 chmod 666 index.html 修改权限。但是由于文件在虚拟机的共享文件夹里,所以没法修改权限。于是索性把文件移到共享文件夹外,再执行修改权限命令,网页就出现了。
随后,输入颜色英文,提交查询,但没有效果,并在服务端报 Can’t locate CGI.pm in @INC (you may need to install the CGI module)
解决办法直接以下通过两条命令安装即可
sudo apt install libcgi-ajax-perl
sudo apt install libcgi-application-perl