交叉编译器环境配置与boa嵌入式web服务器移植问题

简介: 交叉编译器环境配置与boa嵌入式web服务器移植问题

第一次见这种形式的sdk安装脚本:

fsl-imx-x11-glibc-x86_64-meta-toolchain-qt5-cortexa7hf-neon-toolchain-4.1.15-2.1.0.sh

不过确实挺方便,把压缩包和脚本组合在一起,方便使用。这个sdk安装过之后,交叉编译时遇到一些问题,这里记录一下。

这个也可以安装在wsl里面,这样可以不用虚拟机了。


安装配置交叉编译环境


他这个编译器安装比较简单,直接运行这个脚本即可:


默认安装到opt下面,我这个是安装过一次了,所以会提示是否覆盖。

sh fsl-imx-x11-glibc-x86_64-meta-toolchain-qt5-cortexa7hf-neon-toolchain-4.1.15-2.1.0.sh
Freescale i.MX Release Distro SDK installer version 4.1.15-2.1.0
================================================================
Enter target directory for SDK (default: /opt/fsl-imx-x11/4.1.15-2.1.0):
The directory "/opt/fsl-imx-x11/4.1.15-2.1.0" already contains a SDK for this architecture.
If you continue, existing files will be overwritten! Proceed[y/N]? y
Extracting SDK.........................................done
Setting it up...done
SDK has been successfully set up and is ready to be used.
Each time you wish to use the SDK in a new shell session, you need to source the environment setup script e.g.
 $ . /opt/fsl-imx-x11/4.1.15-2.1.0/environment-setup-cortexa7hf-neon-poky-linux-gnueabi


这样就安装成功了,最后提示的那一句:

. /opt/fsl-imx-x11/4.1.15-2.1.0/environment-setup-cortexa7hf-neon-poky-linux-gnueabi


是配置环境变量用的,记得执行一下,然后迅速码出一个hello world来测试下交叉编译器是否能够正常使用:

#include <stdio.h>

int main(int argc, char **argv)
{
        printf("hello world\n");
        return 0;
}

编译:
arm-poky-linux-gnueabi-gcc main.c
main.c:1:19: fatal error: stdio.h: No such file or directory
compilation terminated.


报错了!找不到stdio.h头文件,这可是C语言的基础头文件!提示找不到肯定还是环境变量的问题,这是需要指定sysroot的路径,如下:

编译命令加上sysroot
arm-poky-linux-gnueabi-gcc main.c  --sysroot=/opt/fsl-imx-x11/4.1.15-2.1.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/

编译错误:
In file included from /opt/fsl-imx-x11/4.1.15-2.1.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/include/features.h:392:0,
                 from /opt/fsl-imx-x11/4.1.15-2.1.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/include/stdio.h:27,
                 from main.c:1:
/opt/fsl-imx-x11/4.1.15-2.1.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/include/gnu/stubs.h:7:29: fatal error: gnu/stubs-soft.h: No such file or directory
compilation terminated.


还是报错,这个错误又不一样了,说明还是有问题,经过网上搜索发现还需要加编译参数,如下:

编译命令:
arm-poky-linux-gnueabi-gcc main.c  --sysroot=/opt/fsl-imx-x11/4.1.15-2.1.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/ -mfloat-abi=hard -mfpu=neon

这次没报错,ls查看一下,熟悉的a.out出来了
a.out main.c


到这里编译环境算是搞好了。


交叉编译boa


接下来编译boa服务器,交叉编译boa服务器,可以直接修改src/Makefile,修改内容如下:

LDFLAGS :=  -g  -march=armv7-a -mthumb-interwork -mfloat-abi=hard -mfpu=neon -mtune=cortex-a7 --sysroot=/opt/fsl-imx-x11/4.1.15-2.1.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/

LIBS =  
CFLAGS = -g -O2 -pipe -Wall -I. -march=armv7-a -mthumb-interwork -mfloat-abi=hard -mfpu=neon -mtune=cortex-a7 --sysroot=/opt/fsl-imx-x11/4.1.15-2.1.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/


记得这两行都需要修改,否则还是会报错:


然后就可以编译了,编译过程中如果提示bsion相关的错误,需要安装bsion:

sudo apt-get install bison


如果出现lex 的错误,需要安装fles

sudo apt-get install flex


更多错误参考这里吧:https://blog.csdn.net/zhangxuechao_/article/details/82821739


这样boa就可以编译完成了;


配置boa


如下图是我整理的boa涉及到的文件,其中www用于存放网页文件与cgi文件,boa是可执行文件,boa.conf是boa的配置文件,这个文件需要放在/etc/boa/下面,mime.types放置的路径可以在boa.conf里配置,www的路径也可以在boa.conf里配置。


这里的install.sh是写的一个简单的安装脚本:

#!/bin/sh
mkdir /var/log/
touch /var/log/boa
mkdir /usr/local/boa/
mkdir /etc/boa
cp boa /usr/local/boa/
cp mime.types /usr/local/boa/
cp boa.conf /etc/boa/
cp www /usr/local/boa/ -fr
echo "done."


启动boa时,有时会遇到权限问题,可以修改对应文件的所有者权限即可。

目录
相关文章
|
1月前
|
监控 安全 Linux
RHEL 环境下 Subversion 服务器部署与配置
【10月更文挑战第18天】在RHEL环境下部署Subversion服务器需依次完成安装Subversion、创建版本库、配置服务器、启动服务、客户端连接及备份维护等步骤。确保遵循安全最佳实践,保障数据安全。
|
1月前
|
SQL 机器学习/深度学习 分布式计算
大数据-81 Spark 安装配置环境 集群环境配置 超详细 三台云服务器
大数据-81 Spark 安装配置环境 集群环境配置 超详细 三台云服务器
61 1
|
10天前
|
存储 分布式计算 固态存储
阿里云2核16G、4核32G、8核64G配置云服务器租用收费标准与活动价格参考
2核16G、8核64G、4核32G配置的云服务器处理器与内存比为1:8,这种配比的云服务器一般适用于数据分析与挖掘,Hadoop、Spark集群和数据库,缓存等内存密集型场景,因此,多为企业级用户选择。目前2核16G配置按量收费最低收费标准为0.54元/小时,按月租用标准收费标准为260.44元/1个月。4核32G配置的阿里云服务器按量收费标准最低为1.08元/小时,按月租用标准收费标准为520.88元/1个月。8核64G配置的阿里云服务器按量收费标准最低为2.17元/小时,按月租用标准收费标准为1041.77元/1个月。本文介绍这些配置的最新租用收费标准与活动价格情况,以供参考。
|
8天前
|
监控 PHP Apache
优化 PHP-FPM 参数配置:实现服务器性能提升
优化PHP-FPM的参数配置可以显著提高服务器的性能和稳定性。通过合理设置 `pm.max_children`、`pm.start_servers`、`pm.min_spare_servers`、`pm.max_spare_servers`和 `pm.max_requests`等参数,并结合监控和调优措施,可以有效应对高并发和负载波动,确保Web应用程序的高效运行。希望本文提供的优化建议和配置示例能够帮助您实现服务器性能的提升。
24 3
|
11天前
|
存储 缓存 固态存储
阿里云服务器2核8G、4核16G、8核32G配置租用收费标准与活动价格参考
2核8G、8核32G、4核16G配置的云服务器处理器与内存比为1:4,这种配比的云服务器一般适用于中小型数据库系统、缓存、搜索集群和企业办公类应用等通用型场景,因此,多为企业级用户选择。本文介绍这些配置的最新租用收费标准与活动价格情况,以供参考。
|
11天前
|
存储 编解码 安全
阿里云服务器2核4G、4核8G、8核16G配置租用收费标准与活动价格参考
通常情况下,个人和一般企业用户在购买阿里云服务器时比较喜欢购买2核4G、4核8G、8核16G等配置,这些配置既能满足各种图文类中小型网站和应用又能满足企业网站应用、批量计算、中小型数据库系统等场景,2核4G配置适合新手入门或初创企业,4核8G与8核16G兼具成本与性能优势,适合通用场景,本文介绍这些配置的最新购买价格,包含原价收费标准和最新活动价格。
|
1月前
|
JSON JavaScript 前端开发
《进阶篇第6章:vue中的ajax》包括回顾发送ajax请求方式、vue-cli脚手架配置代理服务器、vue-resource
《进阶篇第6章:vue中的ajax》包括回顾发送ajax请求方式、vue-cli脚手架配置代理服务器、vue-resource
57 22
|
17天前
|
PHP 数据库 数据安全/隐私保护
布谷直播源码部署服务器关于数据库配置的详细说明
布谷直播系统源码搭建部署时数据库配置明细!
|
20天前
|
NoSQL 应用服务中间件 PHP
布谷一对一直播源码服务器环境配置及app功能
一对一直播源码阿里云服务器环境配置及要求
|
26天前
|
NoSQL Linux PHP