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

ops/2024/10/18 8:31:54/

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. 编译步骤

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.ppmy.cn/ops/16324.html

相关文章

【threejs教程9】threejs加载360全景图(VR)的两种方法

目录 前言 1.Equirectangular映射背景 实现步骤 1.初始化TextureLoader 2.加载Equirectangular纹理 3.配置映射类型和颜色空间 4.应用背景 完整代码如下 2.立方体贴图背景 实现步骤 1.创建CubeTextureLoader 2.加载立方体贴图 3.应用背景 完整代码如下 …

【网络安全】安全事件管理处置 — 事件分级分类

专栏文章索引:网络安全 有问题可私聊:QQ:3375119339 目录 一、安全事件分级 二、应急事件分级 三、安全事件分类 四、常见安全事件原因分析 1.web入侵 2.漏洞攻击 3.网络攻击 一、安全事件分级 在对安全事件的应急响应过程中&#xf…

跨平台获取音频设备处理

跨平台音频设备处理通常涉及到使用特定于平台的API或者跨平台的库来枚举和访问音频设备。以下是一些常见的方法来实现这一功能: 使用PortAudio库: PortAudio是一个跨平台的音频I/O库,它提供了统一的API来访问音频设备。使用PortAudio&#xf…

字符串漏洞注入深入学习

字符串型漏洞注入,特别是针对Web应用程序的SQL注入,是一种常见的网络安全威胁。它涉及攻击者在不受控制的情况下,通过构造特定的字符串输入,干扰或改变应用程序中原有的SQL查询语句,从而执行恶意的SQL代码。 要深入学…

矿山自动驾驶技术点分析

自动驾驶多用于乘用车领域,目前矿山自动驾驶量产落地前景广阔,由于矿山工作环境差,污染严重,而且通常矿区面积大,工作任务单一,场景固定,是一个适合进行自动驾驶落地的场景。 矿山自动驾驶俗称智…

MATLAB初学者入门(16)—— 图搜索算法

图搜索算法是解决图论中路径查找和图遍历问题的关键工具。这些算法可以找到从一个节点(起点)到另一个节点(终点)的路径,或者用于发现图中的结构特征。在MATLAB中,我们可以利用图和网络理论工具箱来实现和使…

Oracle之RMAN联机和脱机备份(二)

rman脱机备份,首先使用rman登入数据库服务器,然后关闭数据库后,启动数据库到mount状态,在执行backup database指定备份整个数据库。 1、启动mount归档模式 sys@ORCL>archive log list; Database log mode Archive Mode Automatic archival Enabl…

大珩PPT助手一键颜色设置

大珩PPT助手最新推出的一键设置文字颜色和背景色功能,为用户在创建演示文稿时带来了更便捷、高效的体验。这一功能使用户能够轻松调整演示文稿中文字的颜色和幻灯片的背景色,以满足不同场合和主题的需要。 以下是该功能的几个关键特点和优势&#xff1a…