海思芯片 交叉编译curl

编译之前需要安装编译工具链

sudo apt-get update

sudo apt-get install gcc-aarch64-linux-gnu

检查是否安装成功(我的是aarch64-v01c01-linux-gnu-gcc,aarch64-v01c01-linux-gnu-gcc 工具链是一个特定版本的 ARM 交叉编译工具链)

aarch64-linux-gnu-gcc --version

安装好工具链后,要准备交叉编译curl所依赖的库和包,例如openssl ,因为我们想使用ssl功能,支持HTTPS等安全协议(不需要就不用准备这步,编译出错怎么解决后面会说)。

编译openssl

下载openssl

wget https://github.com/openssl/openssl/archive/refs/tags/OpenSSL_x_y_z.tar.gz

下载成功并解压

tar -xzvf openssl-x.y.z.tar.gz

解压成功:

进入解压后的openssl,配置makefile文件

./config no-asm shared no-async --prefix=/usr/local/openssl--cross-compile-prefix=/usr/local/openssl aarch64-linux-gnu-

配置成功:

执行make

如果出现错误 -m64 就打开makefile文件删除-m64

然后安装 opensslmake install

验证是否成功:

openssl version

which openssl

编译curl

下载curl 并解压

wget https://curl.se/download/curl-8.10.0.tar.bz2

tar -xjf curl-8.10.0.tar.bz2

cd curl-8.10.0

进入到解压后的目录

配置 curl 使用交叉编译工具链

配置 curl 源码以使用交叉编译工具链进行编译。你需要设置交叉编译的 --hostCC 等参数。对于 aarch64-v01c01-linux-gnu-gcc 工具链,配置命令如下:

./configure --host=aarch64-v01c01-linux-gnu --prefix=/path/to/installation/directory CC=aarch64-v01c01-linux-gnu-gcc

如何使用上述的命令 没有设置curl依赖的库 就会报错说找不到什么什么库(就像下面的图片中那样) 这个时候就需要设置库

报错说Brotli、Zstd、LDAP、libpsl 库找不到 只需要在命令后面加上 --without-bortli --without-zstd等。()

./configure --host=aarch64-v01c01-linux-gnu --prefix=/path/to/installation/directory CC=aarch64-v01c01-linux-gnu-gcc --disable-shared --enable-static --without-brotli --without-zstd --without-ldap

需要的就使用 --with-ssl=路径

编辑

配置成功就是下面的界面,可以发现 no 就表示不能使用这个功能, 如果你要使用这个功能就需要先配置好相应的环境,就像openssl一样,我们安装了openssl 并且在配置命令中写了相应的命令,所以ssl 就是on。

上面就是我们配置好了makefile文件

下面运行makefile文件,和运行openssl的makefile文件的步骤是一样的

make

make install

检查是否安装成功 (通过查看版本和位置)

curl --version

which curl

我查看了 和我安装的版本对不上 ,但是也没有报错 不知道整对没有,明天再验证到底对不对

相关推荐
醇氧15 小时前
【Linux】Java 服务生产级部署指南:实现常驻后台、开机自启与系统服务化管理
java·开发语言
回忆2012初秋15 小时前
【Nginx】优雅地走进高性能 Web 服务器世界(1)
服务器·前端·nginx
信创工程师-小杨15 小时前
Linux内网环境如何解决依赖的问题
linux·运维·服务器
设计师小聂!15 小时前
宝塔 Linux 面板保姆级教程
linux·mysql·开源·运维开发
凡人叶枫15 小时前
Effective C++ 条款16:成对使用 new 和 delete 时要采取相同形式
开发语言·c++·effective c++
Zyed15 小时前
[STM32]Day9-Part1USART+串口接收+串口收发
stm32·单片机·嵌入式硬件
不吃土豆的马铃薯15 小时前
C++ 高性能网络缓冲区 Buffer 源码解析
linux·服务器·开发语言·网络·c++
java知路15 小时前
linux yum 下载docker安装包及依赖安装包,并离线安装
linux·运维·docker
小小龙学IT15 小时前
Go 泛型深度解析:从设计哲学到工程实践
服务器·数据库·golang
2601_9555052515 小时前
自然人身份确权可信基础设施赋能 DID 身份合规
运维·金融·区块链·健康医疗·智能硬件·教育电商·政务