web测试2:嵌入式移植boa

news2024/11/17 0:07:14

读此篇之前,先读前一篇

1.在源码编译的时候,指定交叉编译工具链

lkmao@ubuntu:~$ arm-linux-gnueabi-gcc --version
arm-linux-gnueabi-gcc (Ubuntu/Linaro 5.4.0-6ubuntu1~16.04.9) 5.4.0 20160609
Copyright (C) 2015 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

lkmao@ubuntu:~$

(2)Makefile中指定编译链

root@ubuntu:/big/web/boa/boa-0.94.13/src# vi Makefile

 

root@ubuntu:/big/web/boa/boa-0.94.13/src# make clean
root@ubuntu:/big/web/boa/boa-0.94.13/src# make

把第一篇文章中创建的/boa目录复制过来 


root@ubuntu:/big/web/boa/boa-0.94.13/src# cp /boa/ arm_boa/ -R
root@ubuntu:/big/web/boa/boa-0.94.13/src# cp boa boa_indexer arm_boa
root@ubuntu:/big/web/boa/boa-0.94.13/src# cd arm_boa/
root@ubuntu:/big/web/boa/boa-0.94.13/src/arm_boa# cd cgi-bin/
root@ubuntu:/big/web/boa/boa-0.94.13/src/arm_boa/cgi-bin# arm-linux-gnueabi-gcc -o test.cgi test.c
root@ubuntu:/big/web/boa/boa-0.94.13/src/arm_boa/cgi-bin# ls
test.c  test.cgi
root@ubuntu:/big/web/boa/boa-0.94.13/src/arm_boa/cgi-bin#

打包arm_boa目录 

root@ubuntu:/big/web/boa/boa-0.94.13/src/arm_boa# cd ..
root@ubuntu:/big/web/boa/boa-0.94.13/src# tar cvf arm_boa.tar arm_boa/
arm_boa/
arm_boa/boa.conf
arm_boa/log/
arm_boa/log/error_log
arm_boa/log/access_log
arm_boa/boa.conf.bak
arm_boa/boa
arm_boa/www/
arm_boa/www/index.html
arm_boa/cgi-bin/
arm_boa/cgi-bin/test.cgi
arm_boa/cgi-bin/test.c
arm_boa/mime.types
arm_boa/boa_indexer
arm_boa/access_log
root@ubuntu:/big/web/boa/boa-0.94.13/src# ls arm_boa.tar
arm_boa.tar
root@ubuntu:/big/web/boa/boa-0.94.13/src#

将arm_boa.tar上传到开发板

root@ubuntu:/big/web/boa/boa-0.94.13/src# scp arm_boa.tar root@192.168.0.3:/
arm_boa.tar                                                                                                                                                              100%  390KB 390.0KB/s   00:00
root@ubuntu:/big/web/boa/boa-0.94.13/src#

解压arm_boa.tar,并重命名为boa,将boa目录放到根目录。

运行:

root@hehe:/boa# ./boa
-sh: ./boa: No such file or directory
root@hehe:/boa#

报错了,解决办法:

查看文件类型:没错是arm的。

root@hehe:/boa# file boa_indexer
boa_indexer: ELF 32-bit LSB executable, ARM, EABI5 version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux.so.3, for GNU/Linux 3.2.0, BuildID[sha1]=4c7674c1b3b88e796d5712f5b02912b29ffbccdd, not stripped
root@hehe:/boa# file boa
boa: ELF 32-bit LSB executable, ARM, EABI5 version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux.so.3, for GNU/Linux 3.2.0, BuildID[sha1]=484dc539aca9196e4f706e12c0c2b33c27164f36, not stripped
root@hehe:/boa#

查看依赖库: 

root@hehe:/boa# ldd boa
        not a dynamic executable
root@hehe:/boa#

正常情况得到的结果应该是下面这样的:

root@hehe:~/bin# ldd app
        linux-vdso.so.1 (0x7ea48000)
...
root@hehe:~/bin#

经过一番查看,发现是编译器配置有误,重新修改Makefile文件。

root@ubuntu:/big/web/boa/boa-0.94.13/src# vi Makefile

将arm-linux-gnueabi-gcc修改为arm-linux-gnueabihf-gcc。

 再次运行测试:

root@hehe:/boa# ./boa
gethostbyname:: Resource temporarily unavailable
root@hehe:/boa#

发现出错的代码在config.c文件:

276         he = gethostbyname(temp_name);
277         if (he == NULL) {
278             perror("lkmao2:gethostbyname:");
279             exit(1);
280         }

 添加打印信息看看temp_name是什么

276         dprintf(2,"temp_name = %s\n",temp_name);
277         he = gethostbyname(temp_name);
278         if (he == NULL) {
279             perror("lkmao2:gethostbyname:");
280             exit(1);
281         }

 重新编译,运行:

root@hehe:/boa# ./boa
temp_name = hehe
lkmao2:gethostbyname:: Resource temporarily unavailable
root@hehe:/boa# 

猜测 temp_name应该是localhost才对,重新配/etc/hostname文件。

root@hehe:/etc# echo localhost > hostname
root@hehe:/etc# 

重启。

运行boa

root@hehe:/boa# ./boa

在windows登录:

 调用cgi

测试成功。 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/184562.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

C++工程的CMakeLists.txt文件编写

最简单的demo工程如下&#xff1a; #include <iostream> #include <string> int main(int argc,char** argv) {std::cout << "hello world" << std::endl;return 0; } 文件结构如下&#xff0c;其中include可用来自定义接口功能类。 CMake…

IMX Linux 用户手册 --- 1

IMX Linux 用户手册 — 1 第一章 概述 本文档介绍了i.MX LinuxOS BSP (BSP代表Board Support Package)在i.MX平台上的构建和安装方法。它还涵盖了特殊的i.MX功能和如何使用它们。 本文档还提供了运行i.MX平台的步骤&#xff0c;包括单板拨码开关设置、U-Boot引导加载程序的配置…

IP地址是什么

我们知道&#xff0c;网络通讯的本质就是收发数据包。如果说收发数据包就跟收发快递一样。那IP地址就类似于快递上填的收件地址和发件地址一样&#xff0c;有了它&#xff0c;路由器就可以开始充当快递员的角色&#xff0c;在这个纷繁复杂的网络世界里找到该由谁来接收这个数据…

linux上git三板斧的使用

前言 现在在我们的生活当中&#xff0c;用我们程序员的一句玩笑话&#xff0c;来说就是“全球最大的同性交友网站就是githup”。 那么它具有什们功能呢&#xff0c;能让人这么吹捧&#xff0c;用通俗易懂的话来说就是&#xff0c;储存和管理代码&#xff0c;它会记录我们修改甚…

java知识总结(一)

ArrayList和LinkedList的区别1. ArrayList的实现是基于数组,LinkedList的实现是基于双向链表。2. 对于随机访问ArrayList要优于LinkedList,ArrayList可以根据下标以O(1)时间复杂度对元素进行随机访问,而LinkedList的每一个元素都依靠地址指针和它后一个元素连接在一起,查找某个…

【开发工具 - 安装手册】BeyondCompare4 下载与安装+免费使用

1. 官网 Download Beyond Compare Free Trial 2. 下载 阿里云盘 &#xff08;不限速 - 推荐&#xff09;官网下载3. 安装&#xff08;无脑下一步&#xff09; 4.三种方法长期免费使用 方法一 修改初始化文件 C:\Users\Administrator\AppData\Roaming\BCompare\BCompare.ini…

【奇妙的数据结构世界】用图像和代码对队列的使用进行透彻学习 | C++

第十一章 队列 目录 第十一章 队列 ●前言 ●一、队列是什么&#xff1f; 1.简要介绍 2.具体情况 ●二、队列操作的关键代码段 1.类型定义 2.顺序队列的常用操作 3.链式队列的常用操作 ●总结 前言 简单来说&#xff0c;数据结构是一种辅助程序设计并且进行优化的方法论&…

介绍一款2023年新出的mysql管理工具: FlyBird Database Manager

FlyBird Database Manager 介绍 FlyBird Database Manager 是一款mysql 界面化管理工具&#xff0c; 使用go语言编写&#xff0c;天然支持Windows, MacOS, Linux等主流平台。 提供无需安装的命令行版本&#xff0c; 命令行中启动服务&#xff0c;以html支持UI界面,在浏览器中…

[Linux]进程控制

&#x1f941;作者&#xff1a; 华丞臧. &#x1f4d5;​​​​专栏&#xff1a;【LINUX】 各位读者老爷如果觉得博主写的不错&#xff0c;请诸位多多支持(点赞收藏关注)。如果有错误的地方&#xff0c;欢迎在评论区指出。 推荐一款刷题网站 &#x1f449; LeetCode刷题网站 文…

1607_PC汇编语言_汇编语言简介

全部学习汇总&#xff1a; GreyZhang/g_unix: some basic learning about unix operating system. (github.com) 刚刚看了一个小章节&#xff0c;感觉是对8086的汇编做了一个简单的介绍。当然&#xff0c;这里面也有各种机器汇编通用的属性。 1. 等价符号关联的两个表达其实是等…

在线教育-谷粒学院学习笔记(十)

文章目录1 介绍2 登录业务流程3 JWT令牌4 阿里云短信服务5 登录功能6 注册功能7 根据token获取用户信息8 整合首页登录和注册1 介绍 登录实现流程 注册接口 整合JWT整合阿里云短信服务 登录接口 注册、登录的前端实现 2 登录业务流程 单一服务器模式 使用session对象实现 …

仿牛客论坛项目(下)

代码仓库:https://gitee.com/qiuyusy/community 仿牛客论坛项目15.kafka1.阻塞队列2.Kafka入门简介术语解释下载配置命令3.Spring整合Kafka引入依赖配置代码16.系统通知(Kafka)发送系统通知功能(点赞关注评论)1.编写Kafka消息队列事件Event实体类2.编写Kafka生产者3.编写Kafka消…

Spring 源码编绎

本示例基于 spring-framework-5.2.22.RELEASE GradleWapper jdk1.8.0_131编译# 环境准备mavenjdk8idea# 源码下载进入https://github.com/spring-projects/spring-frameworkSpring的源码是发布在github上面的下载最新版发布版源码不要太纠结版本区别&#xff0c;无需刻意保证…

BM5 合并k个已排序的链表

目录 描述 示例1 示例2 思路&#xff1a; 代码&#xff1a; 描述 合并 k 个升序的链表并将结果作为一个升序的链表返回其头节点。 示例1 输入&#xff1a;[{1,2,3},{4,5,6,7}] 返回值&#xff1a;{1,2,3,4,5,6,7} 示例2 输入&#xff1a;[{1,2},{1,4,5},{6}] 返回值…

Linux常用命令——rmmod命令

在线Linux命令查询工具(http://www.lzltool.com/LinuxCommand) rmmod 从运行的内核中移除指定的内核模块 补充说明 rmmod命令用于从当前运行的内核中移除指定的内核模块。执行rmmod指令&#xff0c;可删除不需要的模块。Linux操作系统的核心具有模块化的特性&#xff0c;应…

Elasticsearch(六)--ES文档的操作(中)---修改文档

一、前言 上篇文章我们了解了ES的插入和批量插入文档的操作&#xff0c;分别通过ES的kibana客户端以及Java高级Rest客户端进行学习&#xff0c;那么本篇则进入到对文档的修改操作&#xff0c;同新增文档&#xff0c;也有更新单条文档和批量更新文档操作&#xff0c;但还多出一…

Day873.普通索引唯一索引的选择 -MySQL实战

普通索引&唯一索引的选择 Hi&#xff0c;我是阿昌&#xff0c;今天学习记录的是关于普通索引&唯一索引的选择的内容。 假设你在维护一个市民系统&#xff0c;每个人都有一个唯一的身份证号&#xff0c;而且业务代码已经保证了不会写入两个重复的身份证号。 如果市民…

Java基础项目实战--大学生求职招聘信息网站系统

Java基础项目实战–大学生求职招聘信息网站系统 博主介绍&#xff1a;5年java开发经验&#xff0c;专注Java开发、定制、远程、文档编写指导等,csdn特邀作者、专注于Java技术领域 作者主页 超级帅帅吴 Java毕设项目精品实战案例《500套》 欢迎点赞 收藏 ⭐留言 文末获取源码联系…

基于php的婚纱商城管理系统

摘要网络技术给生活带来了十分的便利。所以把婚纱商城管理系统与现在网络相结合。在婚纱商城发展的整个过程中&#xff0c;婚纱信息管理担负着最重要的角色。为满足如今日益复杂的管理需求&#xff0c;各类管理系统程序也在不断改进。本课题所设计的婚纱商城管理系统&#xff0…

自动驾驶介绍、应用、前景

自动驾驶介绍、应用、前景1 介绍1.1 定义1.2 作用1.3 发展历程1.4 分类23年初竞争格局1.5 顾虑1.6 前景2 产业链现状2.1 芯片2.2 仿真3 技术路线3.1 是否交互3.1.1 单车智能3.1.2 车路协同3.2 主传感器区分3.2.1 纯视觉3.2.2 混合传感器3.3 前装还是后装3.3.1 前装3.3.2 后装4 …