Cgicc搭建交叉编译环境(移植到arm)

news2024/10/5 9:32:03

Cgicc GUN Project官网连接:Cgicc- GNU Project - Free Software Foundation

1. 下载源码

Cgicc下载地址:

[via http] Index of /gnu/cgicc 

[via FTP] ftp://ftp.gnu.org/gnu/cgicc/

目前最新版:3.2.20

2. 源码构建原理

一般,软件的安装编译步骤如下:[1]./configure --> [2]make -- > [3]make install.

        [1] configure 是一个由 GNU Autoconf 提供的脚本,用于自动生成 Makefile。Autoconf 是一个用于创建可移植的源代码包的工具,它可以检测系统的特性和能力,并生成适合当前系统的配置文件。若系统是x86架构,若不指定交叉编译,会自动生成x86的配置文件。

        [2] make 是一个标准的 Unix 构建工具,用于自动化编译过程。它读取 Makefile 中的规则和依赖项,并根据这些规则来构建源代码。若[1]系统是x86架构,没有指定交叉编译,构建出来的软件只能在x86环境的目标机运行。

        [3] make install 是 make 的一个特殊目标。一旦 make 完成了编译过程并生成了最终的可执行文件或库文件,make install 将文件复制到指定的安装目录中(通常,安装目录位于系统的默认位置,例如 /usr/local/bin 或 /usr/local/lib,使得用户可以不指定具体的位置,就可以在系统中运行或使用这些文件类似PATH环境变量)。

3. 交叉编译环境

当前平台/开发平台-编译环境:

[root@localroot ~]# cat /etc/redhat-release 
CentOS Linux release 7.9.2009 (Core)
[root@localroot ~]# uname -a
Linux localroot 3.10.0-1160.el7.x86_64 #1 SMP Mon Oct 19 16:18:59 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux
[root@localroot ~]# lscpu | grep Architecture
Architecture:          x86_64

目标平台/运行平台-目标环境:

root@linaro-alip:~# uname -a
Linux linaro-alip 4.4.132 #38 SMP Sat Jan 4 15:11:14 CST 2020 armv7l GNU/Linux
root@linaro-alip:~# lscpu | grep Architecture
Architecture:          armv7l

4. 编译步骤

tar -xzvf cgicc-3.2.20.tar.gz
cd cgicc-3.2.20

# 核心步骤
sudo ./configure --prefix=/usr/local/cgicc-3.2.20 --host=arm-linux-gnueabihf CXX=/home/project/toolchain/gcc-linaro-6.3.1-2017.05-x86_64_arm-linux-gnueabihf/bin/arm-linux-gnueabihf-g++

注解:

1)--host:指定运行主机编译出来的二进制程序的运行环境。意思是用host参数,告诉configure脚本,编译出来的程序要在哪个平台上面运行。

注意:configure根据--host=xxxxx 会在makefile中生成编译器CC为 xxxx-gcc,这里要说一下,configure会用一段简单的代码,去测试调用xxxx-gcc存在不存在,如果不存在,仍然会把编译器默认为CC=gcc,也就是说,如果你用了一个错误的 --host=xxxxx,configure可能不会报错,最后make时,是调用你主机的gcc编译代码,这样编译出来的程序 ,在目标系统上面是没办法运行的。因此,要指定正确的--host值 ,才能调用正确的交叉编译工具。

2)--prefi:配置安装的路径,如果不进行独立配置,安装后

        可执行文件默认放在/usr/local/bin;

        库文件默认放在/usr/local/lib;

        配置文件默认放在/usr/local/etc;

        其他资源文件放在/usr/local/share;

如果配置了--prefix,比如.configure --prefix=/usr/local/test,就可以把所有资源文件放在/usr/local/test路径中,当需要删除此软件,只需要简单的删除该安装目录,就可以把软件卸载干净。    

3)CXX:指定的编译平台编译工具

sudo make

make install

 进入到安装目录,验证是否编译成功:以下显示成功编译。

 4. 测试程序

1)编译程序

# 进入程序目录
arm-linux-gnueabihf-g++ -o radio_json.cgi main.cpp -I /usr/local/cgicc-3.2.20/include -L /usr/local/cgicc-3.2.20/lib -lcgicc

 将编译生成的cgi程序,上传至arm平台,web server指定的cgi-bin/目录下。

2)将交叉编译生成的 libcgicc.so.3 放在/lib下

否则在执行cgi程序时报错:502

3)启动web server,浏览器输入cgi程序url,执行cgi程序

 http://192.33.7.4/cgi-bin/radio_json.cgi

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

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

相关文章

POCEXP编写—EXP编写实战(1)

TOC 1. 前言 通过上一篇文章的了解,应该都了解了POC是怎么编写的,而且POC和EXP的区别就是POC只能验证漏洞,简单来说就是通过判断特定的响应值来判断是否存在漏洞,而且EXP就需要将响应的内容给返回回来,但是整体在编写…

vue中的mixin(局部混入、全局混入)

一、mixin是什么 Mixin是面向对象程序设计语言中的类,提供了方法的实现。其他类可以访问mixin类的方法而不必成为其子类;Mixin类通常作为功能模块使用,在需要该功能时“混入”,有利于代码复用又避免了多继承的复杂 Vue中的mixin…

低空经济概念

低空经济是指利用低空空域资源,通过低空交通工具和技术创新发展,促进航空产业、旅游、物流、紧急救援等多领域经济增长和产业融合。随着科技的不断进步和航空产业的快速发展,低空经济正逐渐成为全球经济的重要组成部分。 一、低空经济的主要特…

大数据计算引擎中的Calcite

1.Calcite介绍 Calcite是一个动态数据库管理框架,具备数据库管理系统的功能 Calcite具备SQL解析、校验、优化、生成、连接查询等功能 Calcite能够为不同平台和数据源提供统一的查询引擎 2.Calcite能力 比如,对于HBase而言,没有SQL查询的能力…

✨“光纤通信新篇章:BiDi单纤模块的原理与应用”

💡目录 ❓什么是BiDi单纤模块? 🔧BiDi光模块的工作原理 🌟BiDi光模块的优势 🌵BiDi光模块类型介绍 🌠BiDi SFP光模块 🌠BiDi SFP光模块 🌠BiDi X2光模块 🌠BiDi …

科技论文网站:中国科技论文在线

文章目录 1. Intro2. Main3. Cons Evaluation彩蛋:科学素质 这是作者最后一次发这种级别的科普文章 1. Intro 中国科技论文在线是经教育部批准,由教育部科技发展中心主办, 利用现代信息技术手段,打破传统出版物的概念&#xff0c…

NLP step by step -- 了解Transformer

Transformer模型 Transformer相关历史 首先我们先看一下有关Transformer模型的发展历史,下面的图是基于Transformer架构的一些关键模型节点: 图片来源于Hugging Face 图片来源于Hugging Face Transformer 架构 于 2017 年 6 月推出。原本研究的重点是…

GITEE 基于OAuth2的API V5版本

为了构建更好的码云生态环境,我们推出了基于OAuth2的API V5版本。 API V5接口使用方式以及Url都参照GitHub,为了各位开发者更好的兼容已经存在的第三方应用。 API 使用条款 OSCHINA 用户是资源的拥有者,需尊重和保护用户的权益。不能在应用…

信创需求激增,国产服务器操作系统赋能数字化转型

信创,即信息技术应用创新,是指在关键领域和环节推进信息技术的自主创新,构建安全可控的信息技术体系。随着数字化转型的加速,信创需求激增,国产服务器操作系统在其中扮演着至关重要的角色。国产服务器操作系统如何赋能…

TikTok营销攻略:如何精准测试与优化品牌营销策略

在当今数字营销的世界中,社交媒体平台已成为吸引目标受众的重要工具。而TikTok,作为一个快速崛起的视频分享平台,在年轻人中享有巨大的流行度。对于那些希望利用这一平台进行营销的品牌和营销人员来说,了解如何在TikTok上测试营销…

[Rust开发]在Rust中使用geos的空间索引编码实例

geos的空间索引用的是STRTree,这是一种基于STR算法的四叉树索引,有如下特点: 使用Sort-Tile-Recursive (STR) 算法创建的仅查询的R-tree空间索引 STR(Sort-Tile-Recursive,递归网格排序) 基本思想是将所有的矩形以“tile”的方式分配到r/n&a…

使用Azure AI Search和LlamaIndex构建高级RAG应用

RAG 是一种将公司信息合并到基于大型语言模型 (LLM) 的应用程序中的常用方法。借助 RAG,AI 应用程序可以近乎实时地访问最新信息,团队可以保持对其数据的控制。 在 RAG 中,您可以评估和修改各个阶段以改进结果&#x…

大型企业高效内部协同,向日葵SDK私有化部署案例解析

大型集团企业的内部,沟通协作的重要性不言而喻,我们时常能听到关于所谓“大企业病”的吐槽,多数也是源于企业内部沟通协作效率低,进而导致内耗加重。甚至我们可以这么说,越是发展壮大的集团企业,其内部的沟…

力扣刷题学习(跟随视频学着刷)

使用入门 视频链接 【手把手带你刷Leetcode力扣|各个击破数据结构和算法|大厂面试必备技能【已完结】-哔哩哔哩】 https://b23.tv/vIcRT61 时空复杂度 时间: 空间:主要有O(1)和O(n)两种,只用计算开辟的内存&#xff…

3月份牛奶线上市场数据分析:销售额累计近18亿元

随着消费者健康意识的提升,牛奶作为日常营养补充品,其市场需求逐年增加。线上市场具有购买便捷性、价格透明性等优势,越来越多的消费者倾向于线上购买。 今年3月份,牛奶乳品市场呈现稳定发展状态。根据鲸参谋数据显示&#xff0c…

深度解析1688关键字搜索API接口:技术实现与应用探索

1688关键字搜索API接口的技术实现主要依赖于阿里巴巴开放平台提供的API服务。商家和开发者通过调用这些API接口,可以实现商品的搜索、排序、筛选、分页等功能。具体来说,技术实现主要包括以下几个步骤: 注册并获取API密钥:首先&am…

python爬虫插件XPath的安装

概要 XPath Helper是一款专用于chrome内核浏览器的实用型爬虫网页解析工具。XPath可以轻松快捷地找到目标信息对应的Xpath节点,获取xpath规则,并提取目标信息,并进行校对测试;可对查询出的xpath进行编辑,正确编辑的结…

一文解析golang中的协程与GMP模型

文章目录 前言1、线程实现模型1.1、用户级线程与内核级线程1.2、内核级线程模型1.3、用户级线程模型1.3、两级线程模型 2、GMP模型2.1、GMP模型概述2.1、GMP v1版本 - GM模型2.2、GMP v2版本 - GMP模型2.3、GMP相关源码2.4 调度流程2.5 设计思想 3.总结 前言 并发(并行&#x…

Golang-Gin 框架写的免杀平台,内置分离、捆绑等多种BypassAV方式

Golang-Gin 框架写的免杀平台,内置分离、捆绑等多种BypassAV方式 Golang-Gin 框架写的免杀平台,内置分离、捆绑等多种BypassAV方式。 cool 时间线: Golang Gin 框架写的免杀平台- (2021.11.12)Golang Gin 框架写的免杀平台,更…

CVPR往年论文查看

这个就是查看论文的网站:https://openaccess.thecvf.com/ 先别急, 看完再操作,听话!! 如果你要查看CVPR2022年的论文那么就在网站后加上CVPR2022 例如:https://openaccess.thecvf.com/CVPR2022 如果是2023年的那么…